[Архив - Часть 1.2] AutoIt скрипты
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. |
А также вопрос про - как перебрать все элементы контрола типа List, для проверки, совпадает ли новый его элемент с уже существующими?
|
Dirk Diggler
Цитата:
Цитата:
|
Это не вопрос, но грабли... Вот два способа вызова одного скрипта - откомпилированного в EXE и нет:
Код:
script.au3 "%ALLUSERSPROFILE%\Desktop" Код:
script.exe "%ALLUSERSPROFILE%\Desktop" Вывод: используем откомпилированные скрипты (принимающие параметры) только из CMD-файлов! |
Переключение раскладки клавиатуры.
Может кому-то понадобиться, потому что я не сразу додумался как это сделать :)
Понадобилось мне как-то переключить раскладку во время установки программы. Первое что пришло в голову - Send("+^"). И обломался я сильно, и полез в инет за ответом!:search: Найти у далось только два поста в архиве, которые мне не помогли. :sorry: Но стоило тщательнее порыться в Хелпе, как ответ тут же нашелся - Send("{LSHIFT}+{LCTRL}"). Удачи:) |
Как определить наличие хоста? Встроенный пинг не работает. Проверил тремя разными способами, вот последний:
Код:
MsgBox(0,"",ping("192.168.0.1")) Код:
Ответ от 217.106.xxx.xxx: Заданная сеть недоступна. Аутоитовский пинг даже на ping("192.168.0.0") говорит 23, т.е. ответ через 23 мс. |
да и в приведенном в документации примере стоит заменить DNS-имя на IP, как сразу оно перестает работать как надо
Код:
$var = Ping("10.0.0.1",2500) |
forumuser
|
Dirk Diggler
Пробовал вроде активные хосты определяет, по крайней мере по IP... 192.168.0.0 (моя подсеть) дает ошибку 3 на любые другие сети или несуществующие IP дает ошибку 1 |
проблема однозначно существует, в случае ответа от роутера по ICMP Autoit думает, что получил ответ от искомого хоста. Нашел аналогичную тему на родном для AutoIt форуме, насколько мой английский позволяет, понял, что баг был исправлен в одной из текущих бет, я скачал январскую(или уже февральскую) beta 106, пока не пробовал. Вы не бету пользуете случаем?
|
Нет, не бета, у меня наоборот DNS не отзывается. Фича новая, значит без глюков не обойтись. Если бы не ваш пост не сунулся бы в справку и не обнаружил что версия уже устарела... :)
|
А как отследить, что было активизировано окно "Запуск программы"(это которое Пуск -> Выполнить)? Оно собственного заголовка не имеет.
|
А разве "Запуск программы" не заголовок? Вроде работает:
Код:
WinWait("Запуск программы") |
Да, но теперь другая проблема... Я пишу задачу для nnCron, которая при активизации этого окна будет переключать в нем раскладку. Использовал пример из FAQ.
Суть проста - при логоне в цикле пускается нижеследующий скрипт, который сперва ждет активизации окна, переключает раскладку, а потом ждет деактивизации, и завершает работу. Тут же запускается по новой, ждёт и т.п. Как можно убедиться, переключение раскладки - не работает! Я жму Win-R, вижу окно и... печатаю в нем по-русски. А как указано в секции параметры, должен бы по-английски... а в трее балун кажет, что уже WinWaitNotActive выполняется, значит _SetKeyboardLayout уже отработал... Тестировал скрипт на одиночном его запуске, добавил строку, которой проверяю правильность полученного хэндла... все вроде правильно.... Код:
Const $DEU = "00000407" ;Немецкий (стандартный) Может, это не работает потому, что у меня помимо русской и английской стоит также и китайская раскладка? |
спасибо за внимание, конечно, в общем, поборол проблему. теперь я, переключаясь в окно cmd.exe или нажимая Win+R, могу не беспокоиться за раскладку, она у меня всегда английская.... если кому-то надо, выложу скрипты...
|
Dirk Diggler
Цитата:
|
в случае с окном "Запуск программы..." из FAQ не подошло.
|
Как сделать так, чтобы элементы TreeView можно было перетаскивать из одной ветки в другую?
|
Dirk Diggler
Цитата:
Цитата:
|
Цитата:
Цитата:
В целом задача стоит так: есть древовидная структура - корень, от него ветки, достаточно одного уровня, т.е. ветка в ветке уже не обязательно, в этих ветках - некие элементы. Надо лишь одну вещь сделать - чтобы эти элементы можно было легко перекидывать из одной ветки в другую. может, использовать что-то отличное от TreeView? |
Dirk Diggler
Цитата:
Я пробовал так: Код:
Run('regedit.exe') Код:
Send('#r') Цитата:
|
Цитата:
|
Цитата:
У меня вопрос - как получить раскладку текущего окна??? |
Dirk Diggler
Цитата:
Цитата:
Цитата:
Цитата:
А вот и еще один вариант ответа на вопрос "Как программно переключить раскладку клавиатуры?". Нужный кусочек с этой страницы: Код:
Упрощенный пример смены текущего языка на русский: |
Как работают функции типа TCPRecv? Они ждут получения данных или просто проверяют сокет и завершают работу? Их надо зацикливать или нет?
|
Как закрыть окно експлорера? Например после инсталляции antivir открывается папка C:\Documents and Settings\All Users\Главное меню\Программы\AntiVir - Personal Edition. Конструкция
If WinWait ("Главное меню\Программы\AntiVir - Personal Edition","", 10) Then WinClose ("Главное меню\Программы\AntiVir - Personal Edition") не помогает. Где я туплю??? |
VelDmi
WinWait() WinClose() "If" зачем? |
VelDmi
Цитата:
|
Всем спасибо. Нашел ошибку. Почитал справку.
|
Использую для установки скрипты автоита. Уже набралось пордка 15 и грозит добавиться еще! Каждый весит по 120 кило. Что можно предпринять для экономии места:
- паковать чем нибудь экзешники скриптов - не создавать экзешники а ставить первым делом сам автоит и выполнять непосредственно тексты скриптов. Скажите как культурно или как лучше? |
NikLok
Цитата:
|
вопрос по закрытию, предупреждения в Explore
Пожалуйста, представьте себе такой этап работы.
На локальной машине с OC Windows'98 установлен сервер, например, Apach. Пользователь запустил броузер IE (4-я версия), выполнил некоторые дей- ствия и переходит к работе в VB-форме, которая станет активной, а окно IE перестанет быть нужным и его можно будет закрыть! Перед выводом VB-формы на экран осуществляется по методу ieView.Navigate запуск файла "_close.htm" (технол. VBScript), расположенного или где-то на диске C:, или в директории /cgi-bin/ сервера Apach (выбор места размещения файла "demo.htm" сейчас четко не определяю, об этом я попрошу позже, сформу- лировав задачу до конца!). Предназначенный только, чтобы закрыть окно броузера (т.е. сам IE), файл "_close.htm" имеет вид: Код:
<html><head></head><body> клавишами -- "Да" и "Нет" и необходимостью выбора "Да" без каких-либо действий со стороны пользователя. Мои мытарства по решению этой проблемы привели к знакомству с пакетом AutoIt 3.1, программы которого я установил на компьютере. Далее я запи- сал код (см. ниже) для "_close.au3" и откомпилировал его, воспользовав- шись pop_up меню от правой клавиши мышки. Полученный "_close.exe" я разместил в /cgi-bin/ сервера и запустил этот файл. Код:
WinWaitActive("Microsoft Internet Explorer", "Просматриваемая веб-страница пытается закрыть это окно. Закрыть окно?") меню. Как можно догадаться, результат моих попыток обескураживающий! Все галочки в свойствах броузера, разрешающих использование ActiveX не помогли. Я упростил для себя задачу, записав в броузере страницу, с которой следует начать обзор, файл "_close.htm". Так что, загрузив страницу, броузер должен был сам себя закрыть без сервера... и тут я окончательно запутался. Обращение к Форуму на OSzone_net.htm показало, что на нем рассматриваются преимущественно "мягкие" способы установки программных пакетов с винчестера. Моя же задача несколько иная и форму- лируется традиционно по-русски: что делать? Прошу подсказки по разме- щению "_close.exe" и закрытию этого ненужного мне меню!! Спасибо. |
Вот наверное дурацкий вопрос. Как средствами автоита работать с треем. То есть выбрать нужную программу в нем? При различных разрешениях экрана!
|
rhtu
Раз пока никто не ответил напишу я. >> Полученный "_close.exe" я разместил в /cgi-bin/ сервера и запустил этот файл. Надеюсь вы запустили его до того, как запустили скрипт на закрытие окна? >> В функции ожидания приведены тексты, которые я списал с появляющегося меню. Часто списывая тексты с окон допускаются ошибки. Лучше всего копировать текст из встроенной программы Au3Info. >> Предназначенный только, чтобы закрыть окно броузера (т.е. сам IE), файл "_close.htm" Предлагаю вам закрывать окно AutoIt-ом, а не скриптом, например: WinClose ("Microsoft Internet Explorer - моя страница"). Тогда меню появляться не будет. |
Возникла следующая проблема. Я делаю дистрибутив винды с автоустановкрй необходимых приложений при первом запуске оси. Есть такая софтина - FinePrint (или pdf printer), которая печатает документ в pdf файл. Написал сценарий instPDF_Printer.au3 для autoit. При попытке запуска следующим методом из командной строки C:\install\AutoIt3.exe C:\install\FinePrint\instPDF_Printer.au3 вываливается сообщение 'Для установки и настройки компонентов системы воспользуйтесь панелью управления'.
И в трее появляется значек autoit. После повторного выполнения команды все работает. Как можно избавиться от этой проблемы? |
Все разобрался AutoIt3.exe нужно кидать в одну папку вместе с исполняемым скриптом, в моем случае команда получилась такая: C:\install\FinePrint\AutoIt3.exe instPDF_Printer.au3/ Сам спросил - сам ответил. Мож кому и пригодиться!!!
|
nsergeip
А почему нельзя скомпилить .au3 в ехе? И пользуй C:\install\instPDF_Printer.exe! |
nsergeip
>> При попытке запуска следующим методом из командной строки C:\install\AutoIt3.exe C:\install\FinePrint\instPDF_Printer.au3 Должно работать, вероятно внутри скрипта что-то не так. Используй @ScriptDir для запуска приложений. |
Столкнулся еще с одной проблемой: устанавливаю pdfFactory Pro 2.5! Инсталлятор кривучий такой или руки у меня такие, незнаю. В конце инсталляции вываливается информационное окно с кнопкой 'OK'. Его ничем не могу отловить, не WinWait, не WinActive, не WinWaitActive не помогает!!! Если кто с такой прогой сталкивался или мож знает как всетаки 'нажать' эту кнопку подскажите плиз...
|
VelDmi дело не в том что неработает то что в нутри скрипта, autoit не запускается таким образом, обычно он в трее висит при запуске, а так его там вообще нет...
|
Цитата:
Код:
Send("{SPACE}") |
amel27 я делал Send("{ENTER}")! не работает, как будто операция раньше появления окна проходит, или вообще не выполняется, что-то не пойму!?
|
Написал скрипт для запуска подряд других скриптов (на данный момент для автоматизации установки программ). Но автоиту не нравится выделенная строка:
Код:
#include <GUIConstants.au3> |
nsergeip
Цитата:
|
Shaul
Счет элементов массива начинается с 0, нужно так: Код:
For $c = 0 To $installlist[0][0]-1 |
nsergeip
Цитата:
Код:
Sleep (1000) |
amel27
Цитата:
|
Извините за тупость вопроса но очень нужно сделать такое. Имеется назначение клавиши например:
Код:
HotKeySet("{F1}", "go") |
запуск программы
Приветствую.
Выполняю такой коротенький скрипт почему-то запускается несколько экземпляров ina32.exe Окно не имеет заголовка. в чем может быть дело? Заранее спасибо. |
Shaul
Цитата:
Цитата:
|
isDirectory?
Как с помощью AutoIt узнать что директория, а что файл? Я сделал так, но может можно проще
Код:
If FileChangeDir("C:\Windows") Then |
Paki
Цитата:
Код:
$ini=@ScriptDir & '\my.ini' |
Snejok
Так же, как из командной строки - используя обратный слэш в конце имени, пример: Код:
; Прием параметра из командной строки Код:
; Убираем оконечные слэши |
Уточнение получения объекта AutoIt3X при технологии VBScript.
Запись из AutoIt_ru.chm для AutoIt3X, которая приведена ниже, машина в моем случае применения метода CreateObject() воспринимает как 429-ю ошибку -- не может создать объект! Поэтому надо ли указывать путь к autoit3.exe? Или запись, которая ниже, позволяет найти autoit3.exe где угодно, даже на съемном диске (USB-диске)? Или моя первая строка для "fso" обладает недостатком, который приводит к невозможности создания объекта "oAutoIt" при записи из AutoIt_ru.chm? Также есть ли какая-л. литература на рус. языке с примерами применения AutoIt3Х? Пожалуйста, подскажите решение для CreateObject(" ???? "). Код:
Dim fso, oAutoIt |
rhtu
Цитата:
|
Цитата:
Код:
Вот информация полученная autoit Код:
WinWaitActive("pdfFactory Pro","OK") |
Активное окно
Имеется такой скрипт.
Цитата:
1) Когда я закидываю его в автозапуск : ina32.exe при входе в систему появляется ,но на окне нет фокуса, соответственно я не могу послать в окно нажатие клавиши.Даже не представляю почему WinActivate("") не срабатывает(у окна нет заголовка т.е. title). !!?? 2)как можно послать {Enter} определенной кнопке на окне? Заранее спасибо. |
Вот скрипт
Код:
Run("Setup.exe") Код:
Press CTRL-ALT-F to pause the display. ВОПРОС: как написать этот скрипт правильно, так чтобы было предусмотрено то что программа уже имеется, и то что ее еще нет. |
All
На этом форуме принято приводить листинги внутри тэга code ! По теме - Прочтите FAQ !!! nsergeip Цитата:
Код:
WinWait("pdfFactory Pro","successfully installed") Цитата:
Код:
if WinWaitActive("pdfFactory Pro","Да",2) Then Код:
if WinWait("pdfFactory Pro","Да",2) Then dark_n Цитата:
|
Код:
run("\\neiwton\auditscaner\ina32.exe") Код:
WinActivate("", "Inventory Anlyzer") когда я делаю выход из системы а затем вход- фокус появляется и все нормально.Почему так?. |
Мужики, поможите, не сочтите за невежество. Все перечитал на форумах, создал диск для установки винды XP с автоустановкой приложений. Вроде разобрался со всеми необходимыми нюансами. Винда втыкается, все путем, доходит до автоустановки приложений и выходит такая картина - все приложениия с использованием AutoIt не ставятся. Все скрипты пашут, проверял, все путем. Видимо я напартачил в пакетнике - RunOnceEx.cmd. У меня так прописано:
Код:
cmdow @ /HID Код:
REG ADD %KEY%\%i% /VE /D "autoit-v3-setup" /f |
Как написать скрипт, выполняющийся в системе с наивысшим приоритетом, при этом, не использующим (почти) системных ресурсов.
По горячей клавише снимает все процессы или делает log off. Дело в том, что некоторые игры настолько грузят систему, что она не реагирует даже на сеть. или игра глючит. Так вот необходимо по горячей клавише выходить из любой игры, если она зависла. Код:
HotKeySet("{ESC}", "Terminate") |
kralex
Переконвертируй au3 в exe. |
dark_n
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
kralex Нужно писать полный путь к au3-файлу: Код:
REG ADD %KEY%\%i% /V 1 /D "%CDROM%\Путь_к_AutoIt3.exe\AutoIt3.exe %CDROM%\Software\TOTALCOM\total.au3" /f А можешь и проинсталлить - тогда можно будет сразу au3-запускать (если ты принудительно не изменишь действие по ум. для au3-файлов), или откомпилируй (не забыв заменить au3 на exe в своем батнике, ну и пути, ес-но). P.S. Для кого я писал про тэг code? VelDmi Цитата:
Код:
ProcessSetPriority(@ScriptName, приоритет) |
Подскажите, плиз.
Могу ли я написать скрипт, который при нажатии на оба Shift'а переключал бы раскладку ? У меня стоит ХР и там нету такой опции. А очень хочеться. Если такое возможно, то напишите как. Или хотя бы скажите как мне поставить скрипт в режим ожидания нажатия двух Шифтов. |
DimkaZar
Цитата:
Цитата:
|
Есть TreeView с $TVS_CHECKBOXES. Строки в список загружаются из файла. Мне нужно, чтобы скрипт выполнял некоторые действия над выбранными ("оптиченными") элементами (строками) списка. Я так и не смог толком понять, как из скрипта проверить, выделена ли строка в списке
|
Sanja Alone
А ты не подкажешь, может есть другие программы..или еще что...мне очень надо сделать что бы на два Шифта переключалась раскладка. |
DimkaZar
Цитата:
|
Запуск программы под дос
А если на машине стоит MS-Dos,то как быть (запустить Inventory Analyzer)?Может надо с какими-нибудь ключами?
|
Sanja Alone у тебя на сайте я нашел скрипт по установке remote administrator, а вот с регистрацией ты не постарался как я посмотрел, а ето помоему немаловажно в автоматическо установке.
Я столкнулся с проблемой по этой части, при запуске ....Radmin\radmin.exe вываливается окно у кот. нет названия, что с этим делать незнаю, мож накидаешь скрипт доконца? |
Цитата:
|
Почитал фак, форум про АутоИт3 в принципе ясен принцип...
Установил! Решил посмотреть как работает, залез в examples и запустил calculator.au3... Открывается калькулятор встроенный и баста. По идее там должна произойти операция 2*4*8*16= Подождать 2 секунды и закрыться. А у меня ничего не происходит :( В чем могет быть проблема???? PS: Стоит XP professional service pack 2 тоже самое и с примером notepad1.au3, открывается блокнот и все ... |
Цитата:
Код:
; Wait for the calulator become active - it is titled "Calculator" on English systems Код:
WinWaitActive("Calculator") Жирным выделена проблема, titled окна должен быть как у тебя, с русским названием окна - "Калькулятор". Например: Код:
; Wait for the calulator become active - it is titled "Calculator" Код:
on English systems Код:
WinWaitActive("Калькулятор") и ниже по скрипту также, тогда все заработает. Проверь. |
Цитата:
Большое спасибо! ПОМОГЛО! :) Неискушенному зрителю достаточно трудно заметить разницу (воспринимается как должное)... ЗЫ: Получается что надо писать скипты под рус и инг версии?! мде |
Цитата:
|
Так получается, что скрипты вроде как отлаженные на винде, дают сбой на виртуальной машине!!! Вся беда в том, что при установке приложений нет строки статуса, а значит и диагностики. Как люди выкручиваются?
Далее если срубаем саму установку, то есть выходим из нея, то скрипт то продолжает работать!!! И пока его не срубишь процесс манагером, все стоит и ждет. Я было пытался в WinWaitActivate ставить временные задержки, но там надо городить кучу if then для того что бы скрипт далше шол на выход. Может есть культурнее решение??? |
А меня наоборот, когда ставлю на реальной машине, не появляется индикатор установки и заключительное окно. В котором написано, что программа успешно установлена. При этом на соседней машине все нормально. Еще заметил, что эта неприятность происходит с программами устанавлеваемыми из msi пакетов. Не подскаже как это можно исправить?
|
Tanis
Цитата:
ИМХО, автоит нужен там где остальными путями пробится не удалось |
Может быть. Но я уже написал скрипты для 45 программ и не хочу начинать все с начала. Да и просто надо же разобраться в чем дело.
|
nsergeip
Цитата:
Цитата:
kralex Цитата:
Цитата:
Цитата:
Код:
bootcfg.exe /raw "/safeboot:minimal" /a /id 1 Цитата:
Tanis Цитата:
Код:
/q[n|b|r|f] Цитата:
|
кто знает как при помощи реестра изменить текущий часовой пояс в windows. по умолчанию стоит москва, а мне надо екатеринбург? или мож есть какой другой способ?
|
nsergeip
Доделал скрипт для Radmin 2.2 (добавил регистрацию стандартным методом + все действия теперь определяются переменными в секции Global). |
Цитата:
Код:
bootcfg.exe /raw "/safeboot:minimal" /a /id 1 С восстановлением нормального режима пришлось повозиться (плохо когда мало знаний). Так и не смог найти команду после действий в Safe mode, чтобы винда "ребуталась" в нормальном режиме. пришлось прописать AutoIt-ом скриптик замены файла boot.ini - safe mode на boot.ini -normal. Дополнительно слепить пришлось SFX архив с указанием абсолютного пути. Но все равно, огромное спасибо Sanja Alone, свою проблему я решил. |
nsergeip
Цитата:
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones |
Vadikan
Цитата:
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones |
kralex
Цитата:
Цитата:
|
Sanja Alone
Пакеты MSI я cтавлю такой командой Код:
Run ( 'msiexec /i "'&$file&'" /norestart') |
Tanis
Цитата:
Код:
$filename = '\filename.msi' P.S. У меня тоже версия 3.1.4000.2435, но не думаю, что это имеет особое значение. Цитата:
|
Цитата:
2. Применить шаблон к системе можно следующей командой (пример): Код:
secedit /configure /cfg rights.inf /db %TEMP%\rights.sdb |
У меня вопрос по AutoIt. Как скомпилировать скрипт, который будет включать в себя *.exe , *.mp3 , *.jpg , и т.д. (все в одном exe-файле). Функция "Fileinstall" добавляет любые файлы к сценарию. А как запустить их внутри сценария ? Заранее спасибо.
|
Sergio12305
Цитата:
Цитата:
|
У меня вопрос как в автоите вызвать функцию WinApi SetSystemTime. Т.е. как ее вызвать с помощью DLLCall я знаю, а вот как правильно передать параметры чтобы поменять дату незнаю.
|
shita
Ну молодежь и дает! Как вызвать функцию WinApi SetSystemTime ... с помощью DLLCall знают, а что такое DATE из CMD - нет! |
bogomolv
Привет, Сергей. Что-то давно тебя не видно было... Цитата:
shita Код:
$date = '30.12.2006' |
Sanja Alone
Саня, и тебе привет. Да я не строго! Я любя и немножко с завистью. А вы здесь все переиначили! Я сначала не разобрался и недели три тупо заглядывал по старому адресу, удивляясь, а чего это никто не пишет... Новая структура стала информативнее. Только общих тем все равно не будет хватать, и зря вы, модераторы, гонятете Osa-7. Не обращал внимание, как обсуждение особенностей установки программы часто перетекает в обсуждение самих установщиков и возможностей их применения? Именно из таких обсуждений узнал об InstallRite и удобной связке InnoUnp+InnoSetup. C удовольствием опробовал их. С помощью InnoUnp+InnoSetup расковырял Download Master, а на основе InstallRite создал свой установщик DrWeb (ставится за две секунды!). На радостях накинулся на MS IntelliPoint. Но не тут-то было. InstallRite с ним справиться не может. Но даже с непобежденным IntelliPoint установка WinXP и всех программ занимает у меня теперь 15 мин 30 сек. Именно, так - с секундомером, и вылизываю теперь свои скрипты автоустановки. |
Sanja Alone
Спасибо, а то надоело каждый раз дату менять чтобы PL/SQL Developer запустить, время trial закончилось. bogomolv Да вроде не молодежь, но с этим не стыкался. А DLLCall то, что в справке нашел. |
bogomolv
Цитата:
Цитата:
Цитата:
|
Привет.
Я хочу с помощью autoi it производить копирование выделенного текста(в edit полях) но не симулируя ввод с клавиатуры ctrl+c, а исползуя api windows. Хотелось бы узнать как это сделать. |
Добавлю что это нужно сделать под win 98, нужно копировать plain text и rich text.
|
Доброго Времени Суток.
Подскажите пожалуйста, как отследить нажатую - какая именно была нажата? |
Vadikan
Да я не ради спора. :) |
Неожиданно выяснилось, что AutoIt вставляет символы в зависимости от текущей раскладки клавиатуры. В частности при вводе серийного номера в AcdSee 8 при русской раскладке, всталвяется левый номер! Вопрос как узнать текущую раскладку? Ну не анализировать же собственный воод?
|
NikLok
Цитата:
|
amel27
Цитата:
Код:
Send("DKXDVH-3348T-3NHQXB-GHCPRXQ") Не смотрел как работает команда посылки в окно ввода (забыл как она называется - SendEdit может?). Неужели у нее те же грабли? Выяснилось все это когда систему которая ставится с MUI, поставилась без него. Причем непонятно почему то раскладка клавы по умолчанию все ранво всегда русская! Я уже всю страницу по локализации прочитал и воплотил а воз и ныне там. Видать где то, что накрутил. О существовании отдельной ветки знаю и читаю. Но мне кажется этот нюанс должен учитываться и в этой ветке. |
Цитата:
Цитата:
|
NikLok
Используй Код:
ClipPut('DKXDVH-3348T-3NHQXB-GHCPRXQ') |
В шапку добавлена ссылка на справочник по rundll32 - мне показалось, что в AutoIt это пригодится.
|
Подскажите, как из автоит скрипта запустить другие автоит скрипты?
|
NikLok
Сначала поблагодари за предыдущий ответ :) |
Доброго Времени Суток ещё раз.
1. Подскажите пожалуйста, как отследить нажатую клавишу? - какая именно была нажата? |
proxy
Поясни вопрос. Обычно AutoIt сам эмулирует нажатие нужных клавиш. А ты хочешь от него обратного? |
Я хочу узнать какую клавишу (к примеру ASCII код) нажал пользователь, для последующей записи в log.
.......проще говоря: Как в AutoIt реализовать перехват клавиш, без их замены как это делает HotKeySet. К примеру я пишу текст в блокноте, а программа будет показывать все нажатые клавиши. |
proxy
На мой взгляд, ты хочешь от AutoIt то, для чего он не предназначен. "AutoIt", - все-таки, это: "a freeware BASIC-like scripting language designed for automating the Windows GUI". Наверное, тебе больше подойдет брат AutoIt'а - AutoHotKey. Без труда найдешь его в сети. |
Большое Спасибо, по обилию функций в справке - AutoHotKey - это именно то, что я искал.
|
bogomolv Канычна сапасиба. Везде поменял на твой вариант и усе замечательно за...лось!
В раже даже написал скрипт для смены веремени выбора систеым в файле BOOT.INI мОЖЕТ ЕГО еще как можно было изменить, но я сделал так! Код:
$file = FileOpen("c:\boot.ini",0) |
Имеется следующий скрипт:
$netsh = @ScriptDir & '\netsh.cfg' RunWait (@SystemDir & '\netsh.exe interface ip dump > ' & $netsh, @SystemDir, @SW_HIDE) Так вот файл netsh.cfg создается в ДОС кодировке. И я не могу прочитать русские слова командами автоита. $file = FileOpen($netsh, 0) $line = FileReadLine($file) Получаесся абракадабра. Что делать? |
NikLok
Пожалуйста! Приходите еще! :) Код:
RunWait('AutoIt3 script.au3') |
VelDmi
Когда-то решал подобную проблему так: Код:
$f = 'C:\1.txt' |
bogomolv
Спасибо, решил свою проблему так: RunWait (@COMSPEC & ' /c chcp 1251 && netsh.exe interface ip dump > netsh.cfg', @SystemDir, @SW_HIDE) Файл создается в нужной кодировке. |
VelDmi
И это правильно! Что-то подобное и я тогда искал, но не доискал... |
VelDmi
bogomolv Вы, конечно, будете смеяться, но когда я вчера пробовал подобный вариант в кач-ве возможного способа решения обозначенной проблемы, то рез-т был неутешительным: Код:
RunWait (@comspec & ' /c chcp 1251 && ping.exe 127.0.0.1 > ping.log','', @SW_HIDE) При этом, в конструкции: Код:
RunWait (@COMSPEC & ' /c chcp 1251 && netsh.exe interface ip dump > netsh.cfg', @SystemDir, @SW_HIDE) Это я к тому, что способ неуниверсальный :( |
Вложений: 2
bogomolv
Цитата:
Код:
type file1.txt | dos2win >file2.txt Цитата:
|
amel27
Цитата:
|
amel27
Спасибо за упоминание StdOut. Обратив внимание на где-то виденное сочетание буковок, освоил новую для себя функцию AutiIt3 - StdoutRead(). Раньше для считывания результатов командной строки использовал перенаправление в >C:\1.txt или CLIPCOPY.EXE. Теперь все читаю напрямую. Пример, где отыскиваются и затем запускаются все скрипты, нужные на конкретной стадии автоустановки: Код:
$dr = Run('%Comspec% /c dir "c:\drivers\*_2.au3" /s /b', '', 0, 6) |
bogomolv
Блин, надо же! Сам давно искал подобное, но пропустил - бум знать. :) |
всем привет!
вопрос: я заметил что скомпиленные в ехе скрипты во время своей работы занимают до 50-80 а иногда и 100% загрузки процессора! замечали ли вы подобное и как с этим бороться.. для примера: Код:
AdlibEnable("buff", 500) выход из зацикливания, необходим только в примере, на деле мне надо чтобы скрипт выполнялся постоянно в фоновом режиме.. |
bogomolv
Как задействовать в автоите функцию StdoutRead. Ибо версия 3 выдает - незнаю таковой! |
NikLok
Скачать более позднюю... Судя по ChangeLog, эта функция появилась в первых же бетах после выпуска официальной версии 3.1.1. Я сейчас пользуюсь версией 3.1.1.102. |
bogomolv
Спасибо! Ща скачаю! |
а подскажите как в комбо загрузить текст из файла.
в файле каждая отдельная строка это какое то слово. например слово1 слово2 слово3 и т.д. З.Ы. всем спасибо :) уже разобрался :)) |
Никак не пойму: функция Global действует в теле только одного скрипта? Пытаюсь задать переменную в первом скрипте, и, пока он работает, использовать ее значение во втором:
1 файл - 1.exe global $a=20 run("2.exe") /тело скрипта/ 2 файл - 2.exe /тело скрипта/ msgbox(0,"","a is " &$a, 2) Если это не работает, как бы мне еще ввести "переключатели" (в первом файле часть скрипта отработала - во втором происходит переключение на следующий этап)? Все это для того, чтобы progressbar располагался отдельно от других скриптов, но был с ними связан... Это же возможно? :) |
Ptyuch
Код:
1 файл - 1.exe |
Было бы красиво! ;) Только первый файл не выполняется: ошибок в скрипте нет, только вот:
Unable to execute an external program Не удается найти указанный файл: run("2.exe"&$a) Без аргумента $a скрипт запускается. Any idea? |
Ptyuch
Идей нет. Есть замечания. Разве у меня написано run("2.exe"&$a)? |
Огромное спасибо!
%#! Даже в голову не пришло поставить пробел перед ". Может, где можно почитать про такой синтаксис? Потому что я иду дальше по схеме: 1 файл - 1.exe global $a=20 run("2.exe "&$a) /тело скрипта.../ global $a=40 и т.д. 2 файл - 2.exe $a=$CmdLine[1] msgbox(0,"","a is " &$a, 2) /тело скрипта.../ msgbox(0,"","a is now " &$a, 2) В этом случае прописанные условия во втором файле опирались бы на состояние изменяющейся переменной из первого файла. Пока срабатывает только первый триггер, прописанный в global $a -> $cmdlines[1]. Может, как-нибудь через Adlib? Не знаю, правда, как ;) |
У меня есть скрипт, регистрирующию nnBackup. Его регистрация проходит в консольном окне, поэтому я посылаю туда кириллицу с помощью команды Send("{ASC 123}"). Однако это работает только в NT-системах, в 9х там лезет какая-то кразяберность. Как послать кириллицу в консольное окно 9х?
|
По старенькому пройдемся:
Цитата:
Цитата:
|
Ptyuch
Ты, по моему, вообще задачу решаешь немного не с того конца. :) Если это всего лишь бегунок, то лучше всего использовать Adlib. Пример бегунка, приблизительно отсчитывающего время установки: Код:
... |
Я пытаюсь перевести конвертер ASCI ->UTF-8 с C на autoit :). Но видимо что-то не правильно понимаю. На вход функции подаю C3, а на выходе получаю C3 83, что явно неправильно. Или правильно и ошибка в другом?
Код на C Код:
int conv_x2utf(unsigned char* bufin, int len, unsigned char* bufout) Код:
Func StringToUTF($String) Код:
Func StringToUTF($String) |
А кто нибудь знает как взять текст из TreeView, ListView и Listbox входящих в состав интерфейса других програм
(а не GUI сгенерированного autoit скриптом)? |
Имеется программа Runpad Shell. У нее есть API.
API в основном используется клиентами программ контроля, хотя может быть полезным и для любых сторонних утилит. Все функции реализованы ввиде COM-сервера. Примеры использования для C, C++, Delphi находятся здесь Общие замечания: - доступ к функциям осуществляется через единый интерфейс IRunpadShell - все функции возвращают S_OK в случае успеха и другие коды в противном случае - функции не являются Unicode Моя задача написать утилиту, которая бы использовала апи программы на автоит. Примеры на C, C++, Delphi имеются, но я совершенно не понимаю в этих языках, а с автоит поладил. Возможно ли написание такой программы на AutoIt? |
NORIO
Цитата:
|
StringRegExp - не работает :(
Вложений: 1
Пытаюсь разобраться с регулярными выражениями в AutoIt, но не получается :(
Следующий код не работает: Код:
Local $sPattern, $sTest, $vResult, $nFlag Что я делаю не так ??? |
VedunO, функцию по-ходу убрали (во всяком случае в 3.1.1 ее уже нет)
Никто не в курсе - в будующих версиях планируется ли введение в функцию FindFirstFile() рекурсивного просмотра (с вложенными папками)? |
VedunO
Цитата:
XXXler Цитата:
The public history for AutoIt v3 Full technical log including beta versions |
Sanja Alone,
Цитата:
|
XXXler
Цитата:
|
Подскажите, как запустить процесс с параметром снятого атрибута ONTOP.
Сам процесс - это окошко с атрибутом ONTOP. Если ждать появления окна а потом с помощью WinSetState снять атрибут ONTOP, то оно успевает вылезти на самый верх, после чего убирается. Да, заодно еще вопросик. Сможет ли, запущенный процесс со снятым атрибутом ONTOP, запускать окошки с атрибутами ONTOP? А эту проблемку можно обойти? |
Я использую Send для посылки текстати типа "xUSSR"
Код:
Send("xUSSR") |
Dirk Diggler
Цитата:
Поэтому знаю, что проблема легко решается с помощью clipboard. :) |
Какой еще клипборд в консольных приложениях типа окна cmd.exe????
|
Dirk Diggler
Такой: http://forum.oszone.net/post-424899-108.html. Это ответ на твой первый вопрос. И такой: http://forum.oszone.net/post-428524-126.html. Это - на второй. |
Ни первая, ни вторая ссылка не в тему. Не работает вставка клипборда в консольное окно. Dixi. Нужен другой способ.
Особенно я не понял, причем тут Stdout |
Dirk Diggler
Код:
WinWaitActive('Командная строка') |
Нет. Ибо в моей практике 20% консольных окон не выкидывают контекстного меню. Пришлось доработать, но не в этом суть.. А в том, что всё это как-то через задницу. Результат - скрипт для регистрации nnbackup
Код:
$Dir = @ProgramFilesDir & "\NNbackup" |
Dirk Diggler
Твоя задачка напомнила что-то подозрительно знакомое. Вспомнил - SlyControl... Хоть давно им не пользуюсь, удалось разыскать у себя в архиве скрипт: Код:
RunWait('regedit /s "' & $pDir & 'Sly.reg"') |
Не могу понять, как работает функция "InetGet", пишу:
Код:
FtpSetProxy(1) ; прокси не используется P.S. вбиваю этот же адрес в Internet Explorer (v6.0) и все работает отлично, пока пользуюсь внешним WGET-ом |
Подкажите как в AutoIt скрипте дождаться появления некотрого файла, тоесть выполнение скрипта надо продолжить только тогда как появиться конкреткный файл ???
|
1) Можно ли замениь значок который светитса в панели здач?
2) Какой командой возможно открыть порт? |
Monarhia, по первому вопросу: в Aut2Exe смотри в раздел Options -> Custom Icon.
|
Solitude
Цитата:
Код:
While 1 Код:
While FileExists ('disk:\path\filename.ext')=0 Код:
Do Код:
AdlibEnable('fe',2000) |
А нельзя компилировать с путём к файлу, а он компилируетса со скриптом, типо одним целым становятса?
Хотябы картинку можно вставить? |
Monarhia Иконки, которые отображаются в трее хранятся в AutoIt3.exe. Можно попробовать скорректировать редактором ресурсов - но это не выход. Иконка будет другая, но опять-же одна. Проще всего просто скрыть иконку в трее.
|
Не подскажет ли кто как организовать индикатор процесса установки (типа бегунка или любой другой) для данной команды
RunWait (@ScriptDir & '\wmp10.exe /q:A /c:"setup_wm.exe /Q /R:N /DisallowSystemRestore"') |
извините если пишу немного не сюда, просто у меня не одна ссылка на скачивание самой программы AutoIT3 не работает.... ктобы мог поделиться этой прогой и прислать мне ее на niro@lipetsk.ru заранее спасибо
|
Объясните, что за функции Visa Management? В первый раз с таким сталкиваюсь.
И ещё, есть ли возможность как-то работать с железом - COM портом, USB, и т.д. |
adima
А чем тебя не устраивают ранее предлагавшиеся варианты? Особенно много вариантов (с активным обсуждением!) было в прародительнице этой темы. desperate Только что проверил ссылки: http://www.autoitscript.com/autoit3/downloads.php, http://www.autoitscript.com/autoit3/files/beta/autoit/ Работают! Redisych Про Visa Management ничего не знаю. Узнаешь сам - не забудь отписаться сюда и поделиться. Про работу с железом. Не понял, что ты имеешь ввиду, но скорее всего тебе поможет использование в скриптах MS-овской утилитки devcon (http://support.microsoft.com/kb/311272/ru). |
bogomolv
Хочется обработки сигналов, например, с COM порта, а ещё генерацию произвольных сигналов. |
Redisych
Могу лишь процитировать AutoIt Help: Цитата:
|
Надеюсь, что дойдёт и до остального, раз приличный конструктор GUI приделали. Я, если честно, когда начал осваивать язык, и не думал, что изначально он предназначался для "автокликанья". Хотелось бы услышать об опыте написания "классических" приложений и о перспективе такого подхода. Стоит ли, или лучше изучить языки, на которых пишет большинство?
|
Вот ведь, как чувствовал, что Visa близко к моим потребностям. Нашёл на их форуме такое:
Цитата:
bogomolv, кстати, мои соболезнования по поводу вентилятора. А мы соседи, я в городе химиков, энергетиков и строителей... |
а как в Auto IT сделать GUI, очень много прочел про то как описывается сам GUI но вот как назначить его элементам те или иные действия мне не ясно..
|
После прорисовки GUI гоняешь цикл:
Код:
While 1 Код:
Select Взять значение с елемента можно с пом. GUICtrlRead(), установить - GUICtrlSetData(), GUICtrlSetState() и т.д. - все можно найти в справке |
Вложений: 1
Проблемка со скриптом для создания Dial-up подключения..
Суть проблемы в том что не всегда "ставиться" галка "использовать правила набора номера".. Вот скрипт с пометками автора... Может кто-нибудь может что-то добавить/изменить.. |
XXXler
Спасибо буду разбираться!!! |
vasin
Так проще: Код:
;Настройка "Свойства" соединения |
XXXler
Скажи а как скажем зделать что бы скажем было 2-е строки ввода пути 10 чек боксов, и кнопка старта. Идея копирование из источника в получатель тех групп файлов которые отмечены чек боксом, при нажатии на кнопку Старт но с возможностью отмены! Такое возможно зделать? |
SyCraft
Если я правильно понял про отмену (одна для всех перед копированием) то долно получится примерно так: Код:
While 1 |
XXXler
Спасибо!!! |
Вот что получаеться, но при компиляции вываливаеться с ощибкой, подскажи пожалуйста что я напутал?
Код:
#include <GUIConstants.au3> |
Всем доброго времени суток!
У меня возникла следущая проблема: Я создал скрипт, который вызывает окно где можно выбрать каталог, и затем скрипт вписывает результат выбора в файл. Вот его состав: Код:
$var = FileSelectFolder("Вибирите каталог...", "") Как я могу сделать так, что если в том окне, которое появится после нажатия на 'Отмена' (в первом окне), пользователь нажимает в нём 'Нет', то будет запущено первое окно снова. Т.е нужно как-то вернуться на метку, которая будет стоять перед выводом первого окна. P.S: Я знаю что существует команда Wend и она как-то связанна с командой While = - Но как ей пользоваться, т.е как её подставлять в скрипт, я беспонятия |
Есть ещё вопрос:
Можно ли каким-то образом, конвертировать скрипт Bath (файла *.bat), в скрипт AutoIT? |
SyCraft
Цитата:
В частности, неправильно пишешь имена переменных внутри строки: вместо "$FirstPath\profile\notes.adr", нужно писать $FirstPath&"\profile\notes.adr" или "$FirstPath$\profile\notes.adr" (в последнем случае нужно задать Opt("ExpandVarStrings",1)). Creat0R 1) Нужная тебе конструкция While... Wend подробно и с примерами описана в AutoIt Help. Лучше, чем там, тебе никто не объяснит. 2) Конверторов скриптов Bath в скрипт AutoIT нет и не будет. |
bogomolv
Цитата:
Код:
Пример Код:
While $iMsgBoxAnswer = 7 Цитата:
|
Ну вроде все исправил.. но тепрь такая проблема.. после нежатии кнопки начала копирования, копирование не происходит, просто выскакивает информационное окно о начале процеса все..
Не подскажите где я вновь учудил? Код:
#include <GUIConstants.au3> |
Creat0R
Ты не понимаешь суть базового понятия "цикл". + Несколько раз перечитал твое Цитата:
Поэтому могут лишь подправить твой скрипт: Код:
While 1 Цитата:
1. У оператора MsgBox другой синтаксис MsgBox(0,"", "",1) 2. Считывать значения редактируемых переменных нужно в цикле Код:
While 1 Сделай так: Код:
While 1 Например, в твой скрипт я вставил вместо FileCopy("$FirstPath$\profile\opera6.adr", "$SecondPath$\profile\*.*",1) проверку MsgBox(0,"","$FirstPath$\profile\opera6.adr TO $FirstPath$\profile\*.*"). Тут же все твои косяки вылезли наружу. 5. Много мелких недочетов. В частности, зачем циклишь объявление опции Opt("ExpandVarStrings",1)? Обычно это делается в начале скрипта. |
bogomolv
Спасибо, ты уж не взыщи просто я далек от программирования и только учусь!!! Спасибо тебе! |
bogomolv
Огромное тебе спасибо! Всё так как и нужно было! :bye: Я кажется понял суть работы команд Wend и While - Всё что находится между ними, будет выполняться до тех пор, пока значение одной из команд будет ровно 0 (или любое другое кроме 1 - если есть такого), но как я понял, это в случае если у команды While присутствует значение 1 (While = 1). А какие ещё есть возможности её использования? У меня есть пару вопросов: 1) Как осуществлять поиск существующего пути\каталога, и затем произвести определённое действие? Т.е, вот например команда $search = FileFindFirstFile("file.tmp"), произведёт поиск файла file.tmp. А если сделать так: Код:
$search = FileFindFirstFile("File.tmp") Но мне вообще-то нужно, чтобы был поиск не файла, а каталога\пути (или даже будет лучше, если значения $var). Примерно так я себе это представляю: Код:
$search = FileFindFirstFile("$var") |
в хелпе все написано. Ох, батенька, взяли бы какую-нть книжку по информатике для 9 класса.
|
Dirk Diggler
Цитата:
Имхо, справку, которую переделали на русский, как будто с помощью словаря переделывали. Не то чтобы автор этой справки не знает английского, или программирования в AutoIt, я вовсе этого не утверждаю, просто считаю что можно было бы приложить немного больше усилии, ради такой весчи - как помощь по AutoIt'у!). P.S: Извеняюсь за офтоп! (если он таков есть). |
книжка поможет освоить базовые понятия программирования.
2ALL Написал тут скрипт VBS-> AU3. Ничего особенного, просто закатывает VBS в AU3, а тот пишет его в темп и запускает. Какую длину потянет - не проверял. Да и всякие ситуации хэндлятся не особо. Но мне достаточно, я более доделывать не буду. Работает из командной строки script.au3 vbsname.vbs Au3name.au3 при отсутсвии параметров или только второго запросит соот-но оба или один в виде виндового диалога. Запрос на перезапись не дает. Код:
Global $filename |
Creat0R
Цитата:
Цитата:
"Всему лучшему в себе я обязан книгам". А.М.Горький |
Creat0R
Цитата:
PS А тебе действительно поможет учебник для начинающих, так как само понятие циклов, условных переходов и т.д. одинаково для всех языков и начинать нужно с изучения основ. |
Попробовал решить проблему с выводом из CMD как предлогал bogomolv в 120 посте. Во первых если копировать код из инета то он не работает т.к. изменяется строка в $a1 надо брать именно по ECHO, но у меня и она не заработала пока не взял эту строку из GUI самого скрипта. Более того есть большое подозрение что на Win с MUI эта строка будет другой и вообще памятуя о проблемах с кодировками сделал запрос при запуске скрипта. Теперь $a1 будет генерироваться при запуске скрипта под каждой виндой заново.
Код:
#include <Constants.au3> Хотя здесь и писалось хочу напомнить что StdoutRead работает только в последних беттах. P.P.S. bogomolv, VelDmi смотрел форум на сайте разработчиков, не нашёл таких решений как у Вас, хотя конечно все посты не читал но поиск поюзал основательно. Было бы неплохо закинуть код туда. |
Creat0R хелп не ругай коли чайник. Я сам полный самовар в программировании, как здесь советовали пробую сотни вариантов кода и методом научного тыка пытаюсь разобраться. ИМХО читать не люблю особенно учебники. А объяснять основы программирования справка не обязанна. Если мозги текут отпишись в PM гуру, здесь люди отзывчивые помогут. А вообще для того чтобы писать листинги на чистом листе уходят годы обучения. Так что если не готов закажи нужную весч у знающих людей. Кстати справочку человек переводил бесплатно и нужно сказать спасибо за человекачасы и применённые знания.
Извените не удержался. |
bogomolv
Цитата:
|
ANGRO
Цитата:
P.S: А у автора этой справки, прошу искринние извинения, у меня небыло намеринии оскорблять, или ругать работу кого либо! -Просто как сказал ANGRO, я есть Чайник в сфере программирования (или самовар ;) ) |
Решил собрать на основе кода из 196 поста что нить полезное так сказать для проверки в драйв тесте.
Почему-то получился пинг :biggrin: . Код:
#include <GUIConstants.au3> |
Кто-то может мне помочь со следующей задачей:
Нужно запустить прогрессБар, и чтобы он автоматом закрылся, в тот момент как завершит свою работу определённый запущенный процесс в системе (а точнее запущеный скрипт *.bat файла) - и если возможно, то чтобы в окне прогресс бара, была видна бегущая надпись, с текстом который я выберу. (если нет, то хотябы поместить этот текст обычно, как в MsgBox). Возможно таке осуществить? Есть ещё вопрос: При запуске диалога для выбора файла, возвращается значение в переменную $var (что-то в этом роде): Код:
$var = FileOpenDialog("Выбирите архив...", "", "Zip (*.zip)") Код:
FileWrite("c.tmp", $var) Следовательно вопрос: Как мне осуществить сохранение файла (c.tmp), в текущем каталоге? т.е в том каталоге где и находится сам скрипт. Но чтобы ненужно было указывать полный путь, так как запускаться скрипт будет постоянно с разных мест. |
Цитата:
Код:
$var = FileOpenDialog("Выбирите архив...", "", "Zip (*.zip)") |
Подскажите пожалуйста, как можно совместить работу такого (примерного)
скрипта. На основе поставленной в ней задачи, хочу научится некоторым нужным впоследствии, рабочим скриптам. Так что не удевляйтесь возможной несуразности его (скрипта) логики. По частям он работает, но как совместить его работу, моего ума, хелпов и статей форума явно не достаточно... Идея вот в чём: 1. Выбираю первую или вторую колонку, и/или ставлю вручную нужные галочки. 2. Жму на "Кнопка Выбора". 3. Если надо, повторяю п.1 и/или п.2 для выбора другой колонки. 4. Жму "Выполнить" - выполняются соответствующие чекбоксам операции. 5. Нажатия на кнопку "Выход" должно приводить к выходу из скрипта на любом этапе. 6. Не знаю, как придумать, чтоб при повторном нажатии на "Кнопка Выбора" происходил бы select / deselect чекбокса. Вроде бы смог понятно обяснить... Вот скрипт: Код:
|
DenchikK
Цитата:
Цитата:
Цитата:
Цитата:
Код:
Case $msg = $button_1 Цитата:
|
bogomolv
Попробуйте, пожалуйста, запустить мой скрипт - всё наглядно увидите. ;-) Цитата:
Ладно - попробую ещё понятнее объяснить: Как видно по моему скрипту - есть одна часть, которая выполняется, и вторая - закоментированная. Это я думаю видно и понятно. Первая (незакоментированная) часть в зависимости от того, какая из RadioButton выбрана, выделяет три левых или правых чекбокса - то же вроде должно быть понятно. Вторая, закоментированная, часть показывает, что с выделенными чекбоксами делать. И если запустить скрипт в том виде, как у меня он дан, можно увидеть - что первая часть (отметка чекбоксов) работает. Если закоментитровать первую часть, и раскоментировать вторую - видим что и вторая часть так же выполняет свою функцию, что на неё возложена. Теперь немного понятнее стало какие части и что нужно совмещать? Может и не так, как у меня записано, принцип того, что должно получится, ясен? Добавлено: Всё, вопрос снимается - разобрался, как это всё работает (вроде-как). Видать жара и недосып дают о себе знать ;-) Вот что в итоге вышло: Код:
#include <GUIConstants.au3> |
XXXler
Цитата:
Есть такой вопрос: Как по команде IniWrite, записывать строчки в файл конфигурации, но не в самый конец раздела, а, например, во вторую строчку заданного раздела? И ещё, при команде IniRead, возвращается Цитата:
|
Цитата:
Цитата:
Если надо сравнить одно значение: Код:
If IniRead($File,"Section","Parameter","Default Value")="Текст для сравнения" Then MsgBox(0,"","Значение совпадает") |
Creat0R
Цитата:
Код:
$var = IniRead("boot.ini", "boot loader", "timeout", "") |
XXXler
Цитата:
А на счёт строк, так дело в том, что мне нужно проверить именно ключь, а не значение. Т.е пусть даже восспользоваться другой командой, и обращаться к файлу как к обычному (например, как к файлу *.txt), но чтобы сравнить указанный текст со строкой в файле. DenchikK Цитата:
Цитата:
|
Может найдешь что тебе именно нужно:
Код:
;~ Условия поиска |
XXXler
Огромное спасибо! помогло! Появился у меня интерес к такому вопросу - Можно ли каким то образом, воспринимать переданный ключь (рефферер) из другой программы, и чтобы скрипт распознавал, и если это определённый ключь, то что-то должно происходить. Т.е, например, скрипт был вызван из контекстного меню определённой программы, и при этом вызове, был указан ключ (Пример: Item, "Script" = Execute program, "Script.exe", "%A") - И теперь, скрипт должен распознать этот ключь, и если был передан именно этот ключь, то скрипт продолжит заданные действия в цепочке, а если ключь не совпадает, т.е если не был передан именно этот ключ, или вообще не был передн ключь, то должен происходить выход из цепочки (Do....Until...) P.S: Как делать цепочку\выход с неё, продолжение действии и т.д, я уже знаю, и мне нужно только узнать, как распозновать тот самый ключь (рефферер). И ещё вот что хотел узнать, кто-то знает, где мможно посмотреть на разные структуры скриптов, например, для чекбоксов, для передачи результата из выбранного файла\каталога через FileOpenDialog, в затемнённое поле GUI интерфейса, и тому подобное (что-то вроде преведённого XXXler'ом в посте на один выше чем мой). |
Цитата:
Обработка коммандной строки выглядит примерно так: Код:
For $i=1 To $CmdLine[0] |
XXXler
Ещё раз огромное Сенкс за наводку! Вот как мне впринципе нужно было: Код:
Select Если запустить из внешней программы, этот скрипт с ключём, например 1, то будет сообщение: "ок 1", если с ключём 2, то естественно сообщение будет "ок 2" и т.д. -------------------------- У меня остался один открытый вопрос, и буду очень благодарен если сможешь помочь (очень нужно): *Вопрос который я уже задавал: Цитата:
|
Никак. Только написать свою функцию.
|
Dirk Diggler
Цитата:
|
Уважаемый bogomolv!
Большое спасибо за скрипт по настройке dial-up подключений. Когда я давным давно видел его на форуме не думал что он пригодится. Поясните пожалуйста некоторые моменты, которые у меня не получаются. Итак, подключение создается, но: Не стоит галочка "использовать правила набора номера" - как ее поставить? Код страны или региона почему-то США, как сделать Россию? |
Creat0R. Для начала прочитать всё-таки книжку по информатике и хелп к AutoIt3
|
VelDmi
Не "выкай". Настаиваю именно на этой форме общения. Тем более, что двухлетнее знакомство дает право обращаться "на ты" даже за пределами интернета. Цитата:
Код:
;Настройка "Свойства" соединения Цитата:
Если код страны как параметр драйвера модема, так этот скрипт драйверы не настраивает. Если же Area_Code и Country_Code, то это коды выхода на межгород и международную связь. У меня там, наверное, были жестко забиты код саратовские - 8452 и 7. В приведенном выше кусочке скрипта Area_Code и Country_Code определяются переменными $cod и $ccod. (Кстати, а на какой мой скрипт настройки интернет ты ссылаешься? Давай ПМ, вышлю свеженький.) Цитата:
Creat0R Глянь в скрипт. Там есть пример того, как можно записать в ini-файл параметры в нужной последовательности. |
bogomolv
Цитата:
Вот так (см. код ниже), мне удалось во второй раздел ini файла, поместить ключ со значением, но уже не в конец раздела, а в его начало: Код:
$co=IniReadSectionNames("Test.ini") Буду очень благодарен если сможешь помочь! И спасибо за внимание (за пример, и за попытку помочь). Dirk Diggler Цитата:
А на счёт книжки по информатике - как это связанно с AutoIt? или эта книжка предназначена для него?, тогда дай пожалуйста полное название этой книжки, или по возможности, линк по которому я смог бы её скачать... |
bogomolv
Привет! Использовал этот скрипт: Код:
$f = FileOpen(@TempDir & '\ispcnfg.ins', 2) Цитата:
Цитата:
Цитата:
|
Creat0R,
Цитата:
|
XXXler
Цитата:
P.S: Под словом Раздел - я подразумиваю начало пунктам под которым есть ключи и значение у них, вот пример: [Раздел1] Ключь = Значение [Раздел2] Ключь = Значение И т.д.. |
Вызов функции:
IniWriteVP(Файл,Секция,Параметр,Значение,[опционально:позиция параметра в секции]) Например: IniWriteVP($File,"Section","Parametr","Этот параметр будет вторым",2) IniWriteVP($File,"Section","Parametr","Этот параметр будет записан также, как и с пом. IniWrite") Код:
Func IniWriteVP($File,$Sect,$Param,$Val,$Pos=0) |
XXXler
У меня что-то не получается :( . Я если честно, так и не понял, что куда прописывать - Я пытался сделать так: Код:
$Sect="Test1" Если не трудно, напиши пожалуйста скрипт так, чтобы он в файл Test.ini, в секцию "Test3", и в третью строчку этой секции, записывал параметр "Проба" со значением "1". Т.е вот так должна быть прописана строка: Код:
[Test3] |
bogomolv
Цитата:
Ты хочеш сказать, что в справке ясно описанно как сделать мою задумку, или что мою задумку не реально сделать в AotoIt? Тогда как-же в нём делают очень сложные задачи? а такую простую, как запись в определённую строку определённой секции ини файла, не возможно?! не поверю. Просто другое дело, нехватает опыта, или знании сделать такую задачу (или желания), а так или иначе, прямым, или обходным путём, реализовать мою задумку возможно... и надеюсь найдутся добрые, опытные, и желающие помочь новичку в этом деле (в программировании) люди (В их число, думаю входишь и ты, но почему-то предпочитаешь видеть во мне не новичка в программировании, а чайника в целом - что вовсе неверно!). P.S: Извеняюсь за офтоп, но мне хочется чтобы меня понимали, это необходимо для моего прибывание на форуме! |
bogomolv
Цитата:
Во многих кодах, мне ясны только основные вырожения, типа IniWrite, IniRead, For..Next, Do...Untill, переменные $var, $Func, $Sect, $param, $val, $File и т.д и т.п... Но во многих случаях (да почти во всех), увидив их в примерах справки, или тут на форуме, мне не удаётся соеденить их логический смысл воедино. Это подобно тому, как я знаю с десяток слов на французском в отдельности (их звучание и дословный перевод), но если мне начнут говорить на этом языке, даже услышав знакомые слова, я не пойму о чём речь, потому что нету опыта в разгаворе и понимании языка. А взяв русско-французский словарь (аналогия на справку в AotoIt), и прочитав его залпом, будет таже ситуация, и разговор на этом языке я не пойму, пока не стану говорить на нём (разве что если тот самый словарь, будет написан с подробными разъяснениями и мини-уроками по практике речепонимания и произношения). А пример выше, огромное конечно спасибо за попытку, но он, как я понял, проверяет существует ли заданное значение в заданной секции, и если да, то создаёт заданный параметр с заданным значением в этой секции на одну строчку ниже, распознанного значения... а если значение не найдено, то заданный параметр со значением записывается в первую строчку заданного параметра... Но мне, вообще-то, ненужно чтобы там была какая-то либо или чего-то либо проверка, нужно чтобы был скрипт, в определённую команду которого (типа $Pos=3), я смог бы внести номер строки заданной секции, и после запуска данного скрипта, в эту строку прописался бы заданный параметр со значеним. Цитата:
Цитата:
|
bogomolv
Цитата:
Цитата:
А на счёт справки, Спасибо, так намного проще понимать что тебе советуют! :) |
Creat0R, пустые строки в секции имеют место?
|
XXXler
Цитата:
|
Creat0R, все отловил ситуацию:
при таком заполнении: Код:
Func IniWriteVP($File,$Sect,$Param,$Val,$Pos=0) Код:
[Test1] попожжа наваяю, может быть |
XXXler
Огромное спасибо за такое внимание! А может быть есть такая команда, которая после вставки параметра в первую строку, будет как бы двигать его (параметр) по одной строке вниз? А вообще, как я потихоньку начинаю убиждаться, моя задумка очень сложная для выполнения (не только на AutoIt) тем способом который я объяснил. Тогда у меня есть немного другая альтернатива, но цель впринципе та же: Вместо прописывания параметров в определённую строку секции, можно было бы проверять если заданный параметр прописан так как он определён (в скрипте), и если так и прописан, то пусть к этому параметру дописывается символ ; (чтобы параметр был как бы закоментирован), а если у этого параметра уже прописан такой символ, то пусть он убирается, и параметр таким образом становится активным - Этот вриант, как мне кажется, наиболее подходящий, и думаю даже более прост для выполнения скриптом AutoIt. |
Creat0R, чего-то я недопонимаю: если тебе нужно добавить\убрать, например, 5 и 6 по счету элемент меню, зачем изменять позиции остальных елементов?
добавить: IniWriteVP($IniFile,"Menu_1","Item_5","пятый элемент",5) IniWriteVP($IniFile,"Menu_1","Item_6","шестой элемент",6) убрать: IniDelete($IniFile,"Menu_1","Item_5") IniDelete($IniFile,"Menu_1","Item_6") |
XXXler
Дело в том, что там 7 пунктов меню, и если я, допустим уберу третьий пункт, то тот который был четвёртым, автоматом станет третьийм, и уже потом скрипт ошибётся. А также, может быть такая ситуация (если почти все меню будут убранны), когда останутся два-три пункта меню, и их ненужно трогать, а также ненужно создавать тех которых нету (и которые должный быть, если их включикли - по вызову этого же скрипта, но с другим ключём), поэтому я немогу узнать, какие есть, а каких нету, и нужно просто не убирать их, а закоментировать (как я писал в последнем посте про альтернативу), или раскоментировать, если они закоментированный (символом ; ). |
bogomolv
Цитата:
|
Вложений: 1
bogomolv
Цитата:
|
Цитата:
|
ANGRO
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Это в браузере Opera! Цитата:
Возле ссылки Полезное сообщение, нужно было-бы приделать и ссылку такую - Бесполезное сообщение :laugh: P.S: А вообще, спасибо за советы, думаю кога-то, в далёком будущем, они мне и пригодятся, и думаю если бы я и планировал серъёзно начинать программировать, то уж точно не начинал бы с AotoIt (При всём уважении к этому проэкту, и поверь, оно есть). |
Creat0R
Да-а-а, глянул твой скрип... Слов нет - одни буквы... Надеюсь, ты сам все понял. Я всю бурную и бесполезную переписку с тобой поудалял. Прошу это сделать и тебя. Те проблемы, которые ты решаешь, - результат твоей фантастической безграмотности и не имеют никакого отношения к программированию и к AutoIt. |
bogomolv
Цитата:
Большое спасибо за помощь! :beer: (это я серъёзно, без всякого сорказма). |
Я тут людей спрашивал как получить данные сетевых соединений, вот как-то так
Код:
Dim $strComputer = "." |
Цитата:
|
Есть ли у кого пример или готовый скрипт поиска файла по всем дискам и всем директориям и поддиректориям
|
adima
Пример поиска файла здесь уже приводился. В твоем случае нужно лишь зациклить поиск по дискам: Код:
Opt('ExpandEnvStrings', 1); default = 0 |
Где можно взять готовый скрипт или может у кого есть на программу R-STUDIO v.3 EN
|
Скажите, как с помощью AutoIt можно получить раздел реестра содержащий какой либо параметр=значение.
Надо чтобы результатом был раздел реестра содержащий данный параметр равный данному значению. Или может кто подскажет как получить название устройства (установленого, например видео карты)из реестра. По адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ имееется информация о всех установленых драйверах системы, но конечный раздел для каждого устройства разный, в зависимости от того как его назвали при разработке драйвера, единственное как можно определить например видеокарту - это что параметр Group = video |
xstranger
ПННХНЧ (Пишу, Но Ни Хрена Не Читаю)? На основе этого примера можно считать и проверить на соблюдение любого условия любую информацию из любого раздела реестра: Код:
;Считывание на стадии CMDLINES.TXT будущего разрешение экрана Данный пример позволяет проверить наличие железки по ее HWID: Код:
$hwid='PCI\VEN_10DE' ;nforce4 |
нет.... это немного не то. Или то но я не могу понять как этого добиться.
Просто есть идея - скрипт запускающийся в detachedProgram и постоянно проверяющий либо реестр (если возможно оттуда получить значение) либо консольное приложение - которое возвращает установленый драйвер видео/звука/ит.д.. этот скрипт выводит на экран в процессе установки - установленые драйвера - видео, звук, модем и количество неопознанных устройств. Можно конечно открыть devmgr по shift+а10, но какаяже тогда автоматизация..., а идея мне кажется хорошая. может есть у когонибудь какие нибудь практические предложения!?... давайте вместе подумаем |
вот уже кое что нашел:
в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video - перечисляются все видео драйверы установленые на компьютере включая vgasave, но только один вложеный раздел содержит параметр Device Description и его значение равно названию видео карты. с помощью утилиты из состава reskit 2k srv - regfind можно получить значение параметра Device Description |
прошу сильно не пинать, а подробненько разжувать:
Есть прога. К ней есть API-функции. Как их передать программе через autoit?? Просьба попожробенее и на примере. Вот, для примера имею: - доступ к функциям осуществляется через единый интерфейс IRunpadShell ---------------------------------------------- HRESULT TurnShell(BOOL bNewState); Включает или отключает шелл (TRUE/FALSE соответственно) ---------------------------------------------- Как мне к примеру через автоит закрыть прогу через эту функцию??? |
xstranger
Цитата:
Может все же поделишься, зачем тебе все это нужно? Цитата:
Задай в параметре find название своей видеокарты и укажи в reg query свою ветку реестра, и мой скрипт ответит тебе, есть ли такая видеокарта. kpuk Цитата:
|
Это только одна из функций для примера, вот другой пример, который можно тока через API сделать:
------------------------------------------------------------------------------- HRESULT DoSingleAction(RSHELLACTION dwAction); Выполняет определенное действие: RSA_SHOWPANEL - показывает плавающую панель с закладками RSA_MINIMIZEALLWINDOWS - минимизирует все активные окна RSA_KILLALLTASKS - снимает все разрешенные задачи (аналог команды шелла/сервера) RSA_RESTOREVMODE - восстанавливает видеорежим (после выхода из проблемных игр) RSA_UPDATEDESKTOP - обновляет рабочий стол шелла RSA_CLOSECHILDWINDOWS - закрывает все дочерние окна шелла RSA_SWITCHTOUSERMODE - переключает шелл в режим пользователя RSA_TURNMONITORON - включает монитор RSA_TURNMONITOROFF - отключает монитор RSA_ENDVIPSESSION - завершает личную (VIP) сессию клиента (только с версии 4.52) Функция является асинхронной. ----------------------------------------------------------------------------------- Как мне через апи завершить личную VIP сессию клиента? через API !!!! |
kpuk
А какое отношение имеет ко всему этому Autoit? Разбирайся с API! |
Ну какбы на нём писать просто - это раз!
И в нём вроди как есть функция dllcall которая позволяет работать с апи! ВОт по этому и спрашиваю |
kpuk
На Autoit сделать то, что ты хочешь невозможно. Так же как и на WBS. Это проблема реализации API в програме RunpadShell. |
Набросал включение отключение сетевой карточки, мож кому пригодится.
Код:
$sConnectionName = "Home Office Connection" |
ANGRO
?????? Код:
devcon disable *net* |
Цитата:
Да да знаю скажиш можно включить в сборку и не кто не узнает, а ещё лучше прямо в реестор писать и всё. Я стараюсь придерживаться другой концепции, пользоваться только стандартным API настолько глубоко насколько знания позволяют и ничего не писать напрямую в реестор, пусть Win сам с этим разбирается. Для узкой направленности автокликанья в своей винде и сборках для друзей и помощи на работе самый короткий путь типа "взял скачал, на винт забросил, команду передал" подходит, а когда билд уходит на сторону хочется гарантировать определённые вещи. В любом случаи ИМХО мне интересней учится взаимодействию с операционкой используя её возможности. P.S. сколько твой devcon весит, а сколько мой код ? |
ANGRO
Может, все же зайдешь по ссылке, которую я тебе давал? Это снимет кучу заданных вопросов. А на счет "интереснее" - тут спору нет. :) |
bogomolv
Спасибо воспользуюсь твоим предложением. Namespace(49) разобрался писать нужно так Namespace(0x00000031) |
Кто нибудь может пожалуйста помочь разобраться с такой пропблемой:
Чтобы прописывать строчки в начало секции *.ini файла, я воспользовался функцией Func IniWriteVP... Так вот, когда я попытался воспользоваться этой функцией в (цикле?) Select...Case...EndSelect, то выдалась ошибка о том что нету совпадения между Select и Case и между EndSelect (что-то в этом роде), и вообще практический все команды в таком цикле не исполняются (т.е если в этом цикле используется упомянутая функция). Вот пример, который по идее, должен записывать в заданную секцию, параметр со значением, в первую строку этой секции: Код:
Select Может кто нибудь подскажет в чём дело, как это осуществить? |
Цитата:
Функция - это подпрограмма, описанная за пределами основного тела программы (впрочем в AutoIT это не обязательно, т.к. нет четкой границы, можно ставить и в начале (после объявления глобальных переменных ипользованных в ней), и в конце), которую можно вызывать из основного тела программы, передавая ей параметры, получая от нее результат: Код:
;~ Описываем функцию: Код:
;~ Описываем функцию |
XXXler
Цитата:
Цитата:
это то что и нужно было! |
XXXler ты человек смотрю добрый разъесни тогда такую весч.
$var=MyFunc("Заголовок","Сообщение") ну с этим всё понятно, а вот здесь Case $CmdLine[0] = 0 IniWriteVP(@ScriptDir&"\Test.ini","Test Section","Parametr Test","Value Test",1) разве не нужно делать через Call(Func). |
Может кто подскажет как создать WAN PPPoE соединение (обычно это соединение создающееся для работы через модем) и прописать туда логин пароль. Спасибо
|
Цитата:
|
C хитрым кейгеном столкнулся - идентификации не происходит. Почитал
help - но так и не понял, можно ли из этого положения выйти. Как видно по картинке AutoIt определяет лишь: видимый тект: Digerati и ключ (например HEUBGOKIMFLQRJNSP) в полях Edit1 и Edit2 4 кнопки: Static4, Static3, Static2, Static1 |
я не понял, какой такой идентификации не происходит. Но попробуй еще WinSpy от nnCron, они здорово дополняют друг друга
|
Цитата:
>>>>>>>>>>>> Window Details <<<<<<<<<<<<< Title: >>>>>>>>>>> Control Under Mouse <<<<<<<<<<< Text: |
Как с пом. Autoit получить SID пользователя или группы? Я сделал функцию обработки файлового вывода от psgetsid.exe, но она слишком медленно работает.
|
DenchikK
Цитата:
Можно подождать этого окна вот так: Код:
WinWaitActive('') Код:
Do Процитирую AutoIt.chm: Цитата:
|
Dirk Diggler
Цитата:
Решил похожим методом (т.е. слегка раком :) ), только без посторонних утилит и без обработки потоков с пом. соотв. ф-ций в последних бетах АвтоИт-а (RegRead здесь не катит по причине запрета на чтение требуемой ветки): Код:
Func findsid() Цитата:
|
Подскажите пожалуйста, можно ли сделать сравнение даты создания (изминения) файла в сети, с другой датой (указанной в скрипте), и если дата создания (изминения) файла, ровняется указанной в скрипте, то пусть появляется меседжбокс, в противном случае, что-то должно делаться. Т.е, допустим в сети, лежит файл, который в последний раз был изменён 25-ого Января, 2006 г. А в скрипте, указать ту же дату для сравнения - 25-го января 2006 г. И если в момент запуска скрипта, файл не был изменён, и дата его изменения ровна указанной в скрипте, то пусть выскакивает меседжбокс, а если файл был изменён (т.е если уже его дата изминения не ровняется указанной), то что-то должно делаться (неважно что :) ).
Если такое возможно, подскажите плиз как это оуществить. Заранее благодарю за внимание! |
Цитата:
Код:
Func GetSid($_Username) ;возвращает сид юзера. имя должно быть полным, все довески(домен, комп) должны быть уже переданы в функкцию Код:
Func GetSid($UserName, $Domain) |
Код:
HotKeySet("{PAUSE}", "Pause") подскажите что не так? |
AdrenalinE
Цитата:
Код:
Func Attack() |
Цитата:
|
Есть такой вопрос - как заставить скрипт удалить самого себя? Я пробовал сделать такое, прописав создание файла (батника), который удляет скрипт, а затем и самого себя, но мне нужно запускать скрипт не из текущего каталога, а из другого, поэтому при запуске батника, он (батник) работает как бы из того каталога, с которого был запущен скрипт, поэтому и не удаляет сам скрипт (хотя на странность, удаляет сам себя).
|
Всё, разобрался :) ...
Я пробовал через макрос @ScriptName, но таким образом удаляется сам скрипт, а если он закомпилирован в екзешник, то он не удаляется... вот я и решил эту задачю другим способом, и опять таки в помощь пришёл батник: Код:
FileWrite(@ScriptDir&"\temp.bat", "Del /q """ & @ScriptDir & "\" & @ScriptName & """" & @CRLF & "Del /q """ & @ScriptDir & "\temp.bat""") P.S: А на счёт моего предыдущего вопроса в посте #272 никто не знает? хотябы подскажите, возможно такое реализовать на AutoIt, или нет? |
Есть вопрос - можно ли по хэндлу восстановить имя файла?.. В противном случае функции FileFind* почти бесполезны
EDIT: все, разобрался - повелся на имена функций, несмотря на схожее название эти две функции делают совершенно разные вещи - одна возвращает хэндл, а другая имя |
Кто-то может подсказать - как можно осуществить поиск определённого слова, в файле (например, в test.tmp), и именно в простом файле содержащем текст, а не в ini (т.к решение для ини уже тут пдооставили ранее).
Заранее спасибо! |
Creat0R
Цитата:
Код:
;в каком файле искать текст |
Creat0R
И для обычного файла решение предоставляли заранее. Это решение я взял из справки по Dos и прикрутил к AutoIt: Код:
If RunWait('@ComSpec@ /C find "Pacific Rim" < trade.txt','',0)=0 Then Sanja Alone, привет! Ты быстрее набираешь тексты! А я - короче! :) |
bogomolv
Строго говоря, оба варианта находят не слова, а заданные последовательности символов. Например, при поиске слова "кот" мы найдем и "котлету", и "антрекот" и много еще чего... В AutoIt явно не хватает поддержки регулярных выражений, в качестве альтернативы можно использовать FINDSTR. Например, следующий скрипт ищет все вхождения слова BASIC: Код:
If RunWait('@ComSpec@ /C findstr /I "\<baSic\>" lang.txt','',0)=0 Then |
Цитата:
|
Sanja Alone, amel27, XXXler:
Во-первых, большое спасибо за помощь. Пример который привёл Sanja Alone, выводит ошибку (в MsgBox), также пример от bogomolv, выводит ошибку о том, что не возможно найти файл (хотя он наместе)... Но не в этом суть, я в результате использовал пример от Sanja Alone, но немного модифицировал его, т.к этот пример не искал кириллицу (для этого добавил перекодировку строк)... но есть другая проблема - если я пытаюсь указать строчку для поиска, не прямым способом, а через переменную ($Text), то поиск не осуществляется, и постоянно возвращается $Var = @error : Код:
;Файл в котором будет произведён поиск Если в файле Test.ini, в секции [Section], у параметра Parametr, будет значение предназначенное для того самого поиска (т.е само искомое слово), то запустив этот скрипт, в любом случае $Var будет ровнятся @error, т.е текст указанный в ини файле, искаться не будет, а именно так мне нужно осуществить поиск. И ещё раз спасибо, буду благодарен если сможете и в этом помочь. |
Creat0R
Цитата:
Например: Код:
If RunWait('@ComSpec@ /C find "Pacific Rim" < C:\DOS\trade.txt','',0)=0 Then Код:
Opt('ExpandVarStrings', 1); default = 0 |
bogomolv
Вот так выглядит у меня состав скрипта: Код:
Opt("ExpandVarStrings", 1) Вот как можно заставить такой вариант сработать, но это тоже только для латиницы: Код:
If RunWait(@ComSpec & " /C find /i /c ""Word"" ""C:\Test.txt"" | find /c "": 0"" > f.tmp","",0)<>0 Then |
Дополнил код по сетевым интерфейсам.
Не могу понять почему не получается обновить информацию по состоянию интерфейса после включения / выключения. Мож кто подскажит. Код:
#include <GUIConstants.au3> |
Creat0R
У тебя потрясающее умение делать ошибки там, где их сделать невозможно! В своих примерах ты в первом случае искал слово "word", а во втором - слово "Word". Естественно, что результаты были разными. Проблема русского языка и DOS поднималась здесь не раз. Один из вариантов: Код:
If RunWait('@ComSpec@ /C chcp 1251 | find "Ворд" < C:\Test.txt','',0)=0 Then MsgBox(64,"","Текст Был найден") |
bogomolv
Цитата:
Цитата:
Цитата:
|
XXXler
Цитата:
|
С поиском я разобрался, Всем спасибо, пример от Sanja Alone оказался верным, просто нужно учитывать, что поиск включая табы (когда нажимаем Tab), не даёт результатов, и слова для поиска, не должны содержать такие пробелы (Tab)...
Теперь у меня немного другой вопрос - как можно записать текст, в определённую строку файла, но не именно в указанную строку (номер строки), а в заданную строку плюс 4 строки? т.е к примеру, нужно в файл Test.txt, в 12-тую строку+4 (т.е получается как бы в 16-тую, но число строки мне заранее не известно, оно будет браться из возвращённого значения - $Var[0]), записать например такой текст - Hello world! -Возможно такое осуществить? Кстати, хотел узнать, в чём разница между FileWrite и FileWriteLine? вроде они одинаково работают, я пологал, что FileWriteLine, как раз-то и поможет мне в прописовании текста в определённую строку файла, а оказалось, эта функция вовсе этого не умеет :( . |
Есть у кого нибудь скрипт на MsOffice 2003 rus?
|
Creat0R
Цитата:
|
|
Цитата:
|
Господа. Никто не подскажет как запустить файл.hta
Я делал так Код:
run ("mshta.exe /имя файла.hta") |
Dark Engel
Смоти соседнюю тему ;) Просто start /wait wpi.hta и все... |
Dark Engel
Цитата:
Код:
run ("mshta путь\имя файла.hta") Код:
run ("mshta " & @ScriptDir & "\имя файла.hta") |
AutoIt 3.2
Новая версия программы, предназначенной для автоматизации часто выполняемых действий в ОС Windows. Утилита позволяет повторять нажатия клавиш клавиатуры, перемещение и клики мышкой, манипуляции с окнами приложений, работу с буфером обмена и другие действия пользователя. Например, с помощью этой программы можно производить установку однотипных приложений. Для выполнения автоматических действий AutoIt создает текстовый сценарий, который использует функции и операторы VBScript и BASIC, а также некоторых других языков программирования. После создания программой специального управляющего скрипта, его можно скомпилировать в исполняемый файл, который будет работать в любой операционной системе семейства Windows. В новой версии изменен синтаксис написания скрипта, добавлены новые способы взаимодействия с ОС, улучшена совместимость с различными языковыми версиями Windows. ОС: Windows 95/98/Me/NT/2000/XP/2003 | Англ. интерфейс | Бесплатно. Скачать | download AutoIt 3.2 >> (2891 кб) http://www.autoitscript.com/files/au...t-v3-setup.exe |
А вот очередной семпл cделанный на последней стабильной версии.
Код:
Const $RASPBDFLAG_PositionDlg = 0x00000001 ;+ xDlg и yDlg |
ALL
Ну и как вам v3.2.0.1? Пока самое сильное впечатление - это растолстевший втрое exe-шник. Большинство новых функций уже имелись в бетах. Значит, весь "привес" - это COM object support? По поводу последней новации. Знающие и неленивые, выкладывайте, плз, свои наработки с использованием COM object support. Особенно интересны сравнения: "Вот так приходилось делать раньше, а вот так - теперь!" Кстати, что за инфа об изменении синтаксиса? Об этом говорится в анонсе, приведенном DenchikK. При изучении справки и changelog ничего подобного не заметил. |
А что такое COM object support и COM вообще? Дайте пару ссылок
|
Как вариант 288 пост
|
Dirk Diggler
Цитата:
И вообще, оно не работает по другим причинам, именно по тем, что файл который предназначен для поиска в нём, сам по себе в кодировке UTF, а как известно, командная строка плохо работает с этой кодировкой (при поиске кириллицы)... bogomolv Цитата:
--------------- У меня есть другой трабл, буду благодарен если кто-то сможет помочь: По непонятной мне причине, когда делаю проверку на существование файла, то скрипт его в любом случае находит, хотя на самом деле его нет... это происходит после попытки закачять файл из сети... вобщем вот скрипт, который пытается скачать файл из сети, и мне нужно сделать так, что если файл небыл скачен, то должно быть предупреждение об этом (MsgBox): Код:
;Берём ссылку из буффера обмена |
Цитата:
Цитата:
можно например сначала попытатся получить размер: Код:
If InetGetSize($Clip)=0 Then |
XXXler
Цитата:
Цитата:
Я пробовал так (без участия буффера обмена, думал в нём дело): Код:
$Clip = "http://ссылка.zip" Когда я поменял немного ссылку (убрав расширение .zip): Код:
$Clip = "http://ссылка" Я даже пробовал через командную строку проверить файл, через функцию _RunDos (закачался ли, или нет), но даже и так файл как бы существовал... а когда делал проверку отдельно (в батнике), то всё ок, никакого файла не существовало. Может всё же есть какой-то, пусть даже хитрый, но работающий способ? |
Цитата:
|
Очередной семпл, в дополнение к 301.
Пишу сюда чтоб сразу не утонул т.к. проявился интересный нюанс. Размер структуры нужно выравнивать по 4 байтам. Уж не знаю везде или нет в приведённом примере точно. Код:
Const $RASEDFLAG_PositionDlg = 0x00000001 |
Какой будет правильный синтаксис в скрипте AutoIT для добавления программы в Firewall Windows XP
Мой вариант не правильный: RunWait ( 'netsh firewall add allowedprogram' '@ProgramFilesDir & '\' & 'InterVideo\DVD7\WinDVD.exe WinDVD ENABLE' ) SciTE выдает ошибку (C:\Install\WinDVD 7.0.27.191\autoit-windvd7.au3(67,69) : ERROR: syntax error RunWait ( 'netsh firewall add allowedprogram' '@ProgramFilesDir & ') |
Цитата:
Код:
RunWait('netsh firewall add allowedprogram ""'&@ProgramFilesDir&'\InterVideo\DVD7\WinDVD.exe"" WinDVD ENABLE') |
XXXler
Спасиба! |
А вот кстати как это будет на COM.
Особо не разбирался в возможностях просто транслировал пример из MSDN. Не уверен что будет работать до WinXP_SP2, но стоит проверить. Код:
;Firewall Adding an Application |
Рабочий вариант:
Код:
Select |
Нужен скрипт который бы сканировал текущий каталог и выводил в результате все подпапки, вот что у меня вышло
Код:
;--------------------------------------Start Dir---------------------------------------- |
bodro
интересно чем не устраивает DIR? Код:
DIR /AD /S /B >test.txt Код:
$root="C:" |
конечно, синтаксическая ошибка. внимательнее надо быть, у Вас апостроф вместо & .
|
Код:
;~ Функция вывода структуры каталогов Есть минус - каталоги в массиве идут по вложенности (сначала верхний уровень, потом вложенные папки), да и быстродействие хромает... |
спасибо DIR /AD /S /B >test.txt меня полностью удовлетворил :)
|
Такой вопрос - Как можно корректно, закрыть определённую программу (не убивать её процесс, а именно нормально закрыть). Эту программу не получается уловить через WinWaitActive, она находится в трее, а как из трея вызывать окно, я не знаю.
И ещё, я запускаю Winamp из трея (повторным запуском), но не получается также уловить его окно, вроде знаю заголовок, но ничего не происходит, скрипт продолжает свои действия не активируя окно винампа (а действия связанный именно с ним). Может есть другой способ уловить окно? т.е не по заголовку, а по другим показателям, ведь заголовок может меняться (при разных языковых версиях). |
А ProcessClose разве его не корректно завершеает?
Кстати не нашел там ProcessKill По поводу винампа попробуй Код:
AutoItSetOption("WinTitleMatchMode", 4) |
Ivan1986
Цитата:
Цитата:
Я выкрутился временно так: Код:
;Проверяю, если винам не запущен, то... |
Вложений: 1
Уважаемые знатоки помогите как в элементе "ClassNameNN: SysTreeView321" поставить чекбокс в нужном мне месте . Перерыл справку но ничего не нашел , наверняка есть как это сделать но ничего не могу найти??
|
Интересно, как можно задать в скрипте, чтобы определял два параметра командной строки? Т.е, например, я запускаю закомпилированный скрипт таким образом - start script.exe %l %c - Где %l это параметр, который интерпритируется как ссылка (запуск происходит их браузера opera), а %c это параметр, который передаёт содержимое буффера обмена. Так вот, после такого запуска, нужно чтобы для первого параметра происходило одно дейсТвие (пусть даже выводитя MsgBox со значением), а для второго параметра другое действие.
Или хотябы сделать так, чтобы можно было распозновать параметр не по его конечному значению (если %l то значение будет ссылкой по которой было нажато действие для вызова скрипта), а именно по его изначальному виду. Если скрипт допустим запущен так - start script.exe %l - то нужно чтобы в скрипте было распознование того, что его (скрипт) "вызвали" именно с таким ключом (т.к в скрипте есть ещё другие функции, вызываемые другими ключами)... я пробовал таким образом: Код:
If $CmdLine[1] = "%l" Then Я пробовал и так: Код:
If $CmdLine[1] = 0 Then |
Creat0R
Вот простенький разборщик ком. строки: Код:
If $CmdLine[0]<>0 Then |
Доброго времени суток!!!
1.Сначала у меня вопрос Как запустить папку Панель управления? а ещё лучше сразу открыть "свойства системы" (Система) 2.Обнаружил косяк. Собрал exe-шник, у меня работает хорошо и закрывается, а вот у друзей работает, но не закрывается - просто сворачивается в трей - что делать ?? 3.И ещё как оказалось - у них не отображаются сообщения MsgBox(0, "Сменщик имени рабочей группы", "Вы уже в группе PLEXUS") Вааще странно. У меня всегда отображались :( |
KotoVAS
Цитата:
Код:
%WINDIR%\system32\sysdm.cpl |
KotoVAS
Цитата:
|
Да все, как запустить я нашел - А мож знаешь надежный спосб переключения между закладками в "Свойства системы". Мышью пользвать и CTRL+TAB - не очень надежно )
|
KotoVAS
Цитата:
Вот полный список закладок окна "Свойства системы": System Properties: Advanced System Properties: Advanced Tab System Properties: Automatic Updates (2003) System Properties: Automatic Updates (XP) System Properties: Computer Name System Properties: Device Manager System Properties: General System Properties: Hardware System Properties: Hardware Profiles System Properties: Network Identification System Properties: Performance System Properties: Remote (XP) System Properties: Remote (2003) System Properties: System Restore System Properties: User Profiles P.S. Сейчас подправлю шапку, чтобы всем было понятно зачем нужен этот справочник. |
Sanja Alone
Цитата:
|
Цитата:
я уже давал пример здесь, если его видоизменить то можно передавать определенные значения с подключами: Код:
For $i=1 To $CmdLine[0] |
Sanja Alone
помогите мне сделать сделать маленький скрипт на RAR SFX архив, нажать извлечь, потом вставить пароль с текстового дока, подождать пока распакуется, подождать пока запуститься установка проги, а потом нажать - No то есть не перезагружать комп. заранее большое спасибо! |
prokazzza
Цитата:
|
boss911
Цитата:
|
prokazzza
Цитата:
Сори, оффтоп получаетса!! |
XXXler
Цитата:
Цитата:
Вот как я приминил это дело: Код:
Select А команда для запуска из браузера такая: Код:
Execute program, "Test.exe", "/url=%u /txt=%T" Кстати, ты упустил символы $ у некоторых переменных CmdLine ;) |
prokazzza
Цитата:
Код:
;имя (или полный путь и имя) sfx-архива берем из ком. строки (если ничего нет - выходим) |
Creat0R
Если порядок параметров строго определен, то можно не париться с доп. текстом. Тогда "анализ" ком. строки будет выглядеть так: Код:
If $CmdLine[0]<>0 Then Код:
Execute program, "Test.exe", "%u %T" |
Sanja Alone
Цитата:
Но у меня появилась немного другая проблема (на эту-же тему) - Дело в том, что если выделенный текст содержал кавычки (более чем две пары), то кавычки не попадают в файл. И ещё, если выделенный текст содержит кавычку, а затем пробел (в дальнейшем тексте, и именно в дальнейшем, не в предыдущем), то выдаётся сообщение с ошибкой выполнения сценария - Что мол переменная используется без того чтобы она была объявленна. А когда объявляю переменные, скрипт не выводит ошибок, но при таком случае (кавычка а затем пробел -> "текст ) вообще ничего не пишет в файл (кроме ссылки естественно). - Это лечится? P.S: Странно, но вот например, если выделить такой текст: "Текст То кавычка становится после слова (в файле): Текст" |
Creat0R
Цитата:
Например, если в ком. строке скрипта я напишу: Код:
"Hello, Остап Ибрагимович. Вы являетесь работником фирмы "Рога и копыта"?" Код:
1 - "Hello, Остап Ибрагимович. Вы являетесь работником фирмы Рога" Код:
For $i=1 To $CmdLine[0] P.S. Можешь еще попробовать побороться с буфером обмена. Похожая на твою задача была в старой теме - я решал ее вот так |
Sanja Alone
Цитата:
Код:
$Text = ClipGet() Код:
Copy & Execute program, "Script.exe", "%u" Ещё раз спасибо за помощь! ------------------------------------- У меня тут появилась проблема с другой сферы... Я сделал немного примитивный (пробный) гуи интерфейс (см. код ниже), и есть пару вопросов по этому поводу: А) Как можно сделать, чтобы после зажатия галки у надписи “Опция”, окно (MsgBox) появлялось только после зажатия, а не каждый раз. Т.е в данный момент, если я зажму галку, то сообщение появляется, если отожму, то тоже появляется - как сделать чтобы появлялось только после зажатия? Б) У меня в гуи (GUI), есть две кнопки (кроме прочих) - Одна для отмечивания всех галок ("Выбрать все"), а другая для их снятия ("Очистить все") - Вопрос: Как сделать чтобы была такая одна кнопка, а ещё лучше тоже чекбокс, после нажатия которого\ой, выделялись бы все чекбоксы, а если отжать эту\от кнопку\чекбокс, то чтобы также и отжимались все остальные чекбоксы? Г) Это самая большая прблема, и она у меня имеет наивысшый приоритет для решения - Я поместил в гуи прогресс бар (progressbar), и хотел бы добиться такого результата, чтобы в то время, как происходит копирование определённых файлов, этот прогресс бар был задйствован. Т.е если я копирую например большой файл (фильм к примеру), то чтобы пока он копировался, ползунок бегал в прогрес баре. Мне в принципе не нужно чтобы происходил там какого то рода подсчёт размера файла (хотя думаю в этом и заключается достижение моей задачки), и на основе чего и делался прогресс, а чтобы просто было видно что копирование в прогрессе (и не важно в каком этапе оно находится :) ). Я временно ограничелся запуском внешнего прогресс бара (через запуск этого же скрипта, с ком. строкой), который (прогрессбар) ходит туда сюда до тех пор, пока не будет существовать определёный файл, который создаётся самим скриптом в тот момент, как копирование окончено (т.е я поставил команду создания этого файла как метку, после команды копирования). Но хотелось бы чтобы этот прогресс бар был внутри гуи интерфейса. Скрипт: Код:
#include <GUIConstants.au3> |
Помогите разобраться почему не работает выбор строки из выпадающего меню для Adobe Creative Suite 2 Russian by cvs/SSG
Код:
ControlCommand('Adobe Creative Suite 2 Russian by cvs/SSG','Activation','obj_COMBOBOX1','SelectString','Photoshop CS2 9.0') |
Creat0R
А) Код:
If $msg = $Opt Then А где ты В) потерял? :) Г) Прогрессбар - это весьма муторная штука, когда нет естественных привязок. Твой вариант - это именно тот случай (такая же проблема была и у меня в OEsr). Я не стал париться, и сделал простой "светофор" :) Он не мешает работе основного приложения (в данном сл. - архиватора) и дает пользователю представление о происходящем (для верности, можно в процессе/конце операции еще проигрывать звуковой файл и/или выводить сообщения в трее - SoundPlay ( "filename" [, wait] ), TrayTip ( "title", "text", timeout [, option] ) ). Я этого делать не стал, а ты можешь попробовать... sattva Цитата:
Код:
ControlFocus('Adobe Creative Suite 2 Russian by cvs/SSG','Activation','obj_COMBOBOX1') Код:
ControlCommand('Adobe Creative Suite 2 Russian by cvs/SSG','Activation','obj_COMBOBOX1',"SetCurrentSelection", ControlCommand('Adobe Creative Suite 2 Russian by cvs/SSG','Activation','obj_COMBOBOX1',"FindString",'Photoshop CS2 9.0')) Код:
Send("{DOWN число}") |
Sanja Alone
я не силен в скриптах пожалуста можно сделать вот скрипт запуск c:/install/install.sfx.exe нажать кнопку "извлечь" вставить пароль из c:/install/password.txt нажать кнопку "ок" пождать пока распакуется RAR архив подождать пока установится istall.exe если выйдет надпись "сделать перезагрузку" нажать нет, если не выйдет надпись то ничего не делать. |
Sanja Alone
Спасибо, сработал только этот вариант Код:
Global $file='Adobe Photoshop CS2.msi', $key='keygen.exe' |
prokazzza
Цитата:
Цитата:
Цитата:
|
Возвращаясь к задаче поиска вхождений заданного слова в произвольный текст. Выше я дал маху утверждая, что AutoIT не поддерживает регулярные выражения... хотя с русским опять облом - если метасимволы \l \u \w еще работают, то (?i) ни в какую... :(
StringRegExp - Check if a string fits a given regular expression pattern. StringRegExpReplace - Replace text in a string based on regular expressions. вариант поиска слова с использованием регулярных выражений (на основе скрипта Sanja Alone): Код:
#include <File.au3> |
Sanja Alone
Снова огромно спасибо за А) и Б) Цитата:
А на счёт Г), я всё же решил немного попариться, и нашёл, я бы сказал, обходное решение... Вместо того, чтобы копировать файл командами AutoIt'а, я повесил копирование на ком. строку: Код:
Run(@ComSpec & " /c copy /y ""c:\File.txt"" ""d:\File.txt""", "", @SW_HIDE) Но и это можно обойти, создав той-же ком. строкой, файл во временной папке %temp%, и по завершению копирования удалять его, а проверку для завершения прогресс бара, делать так: If Not ProcessExists("cmd.exe") or Not FileExists(@TempDir & "\mark.tmp") Then ExitLoop Или может есть более надёжный способ, но тогда нужно узнать, возможно ли, и как, проверять когда был запущен процесс (cmd.exe), и если именно этот процесс не существует, тогда выходить с петли. Если кто-то подскажет возможно ли такое, и если да, то как осуществить, то буду очень признателен. ---------------------- У меня есть ещё один вопрос, и тоже в другом направлении - Нужно взять в переменную, все последние символы идущие после определнного знака у значения другой переменной. Т.е, вот например значение переменной $Var ровняется c:\program files\my programm\test.zip - и нужно чтобы из этой переменной, вернулось такое значение - test.zip - в другую переменную, например в $Var1. Но заранее, не известно, ни количество слэшей (\) в пути, ни количество символов после последнего слэша. Возможно такое осуществить? Как я понимаю, тут как-то нужно задействовать одну из вариации команды String, но если честно, то я уже замучался в попытках подобрать подхолящюю для этой цели вариацию, и справка тоже не помогла :( Я временно это решил опять-таки ком. строкой :) : Код:
$Var = "c:\program files\my programm\test.zip" |
Creat0R
Цитата:
Код:
Func PathName($fullpath) |
Creat0R
Цитата:
Код:
$var = 'c:\program files\my programm\test.zip' |
amel27, Sanja Alone:
Спасибо! то что нужно было! |
Интереснейшая фигня наблюдается. Имеем скрипт, который пингует некий хост, и выходит с кодом либо 1, либо 0
Код:
If Ping($cmdline[1],2000) > 0 Then Код:
@echo off Цитата:
Цитата:
Однако, удалим конструкцию с IF, и всё работает как надо: Код:
@echo off Цитата:
Проверено на XP SP1, AutoIt 3.2.0.1 |
Sanja Alone
вот ссылочка на архив посмотрите пожалуста http://uploaded.to/?id=f31c2d весит метр внутри реадми, файл с паролем и RAR SFX архив внутри архива простая прога Atnotes вирусов НЕТ. Заранее спасибо! |
Такая проблема появилась:
Нужно взять значение пареметра в переменную, но брать нужно не из файла конфигурации (*.ini), а из обычного текстового файла. Я решил эту задачу, но только если кодировка файла не является UTF-8, если она такой и является, то киррилица которая будет прописанна в значении, будет отображаться крякозябрами (если вывести переменную в MsgBox)... вот пример работающего скрипта, с файлом test.txt, который в кодировке ANSI: Код:
$File = @ScriptDir & "\test.txt" Код:
2000000= "это тест" |
prokazzza
Код:
If $CmdLine[0]=1 Then Цитата:
P.S. Гораздо удобнее сделать тихую установку этого самого Atnotes непосредственно из его дистрибутива (с отменой перезагрузки, конечно, если она там требуется), а уже свои настройки для этого приложения восстановить из архива. Код:
Global $file='atnsetup.exe', $InstPath=@ProgramFilesDir & '\ATnotes', $programgroup='ATnotes' , $rus=@ScriptDir & '\ATnotes.ini' |
Dirk Diggler
Цитата:
Код:
@echo off |
Sanja Alone
вот картинка перезагрузки (1 рисунок) по умолчанию стоит сразу на YES и просьба можешь доработать вот этот скрипт Код:
Run("rundll32.exe netshell.dll,StartNCW") |
prokazzza
Цитата:
Цитата:
|
Sanja Alone
Цитата:
Цитата:
|
prokazzza
Цитата:
Цитата:
Цитата:
|
Creat0R
Цитата:
Код:
$file = "test.txt" |
Кстати, а что с поддержкой юникода(UTF-8) в autoit? Оч. хотелось бы сделать gui-оболочку для редактирования файлов с иероглифами. Возможно?
|
amel27
Цитата:
|
Sanja Alone
Ты меня совсем не понял. Извини если я тя чем то задел. Мне не нужен Office (мне его и на работе хватает) я хотел показать тебе экран перезагрузки, я пользуюсь пользуюсь прогой Symantec Ghost AI Snapshot мне так более удобно сделал все настройки сохранил как с Atnotes и все Winamp, Nero устанавливаются за 2-3 секунды, со всеми ярлыками какие нужны, с настройками. Тока один недостаток просит перезагрузку понимаешь как это неудобно в режиме GuiRunOnce после каждой проги появляется экран перезагрузки - Nero перезагрузка, Promt перезагрузка ну и т.д. Постоянно приходится нажимать нет, нет..... Цитата:
Насчет AutoIt, мне он не нужен в дальнейшем, вот как ты думаешь скока часов уйдет на то чтобы я овладел какимитами понятиями о действиях этой проги, для того чтобы поставить одну!!! единственную команду на отмену перезагрузки. |
prokazzza
Цитата:
Цитата:
Цитата:
|
Здравствуйте.
Кто-нибудь знает, как в AutoIt реализована функция ProcessList? Используется ли там DLLCall("psapi.dll"...) или DLLCall("kernel32.dll"...) Заранее благодарен. |
AxelM
однако PSAPI.DLL, хотя конечно не DLLCall :) |
Есть два тревожующих вопроса:
1) Нужно запустить мелодию (точнее звук в 5 секунд), и чтобы она постоянно запускалась в цикле. Т.е пока скрипт запущен, чтобы один и тот-же файл играл по кругу (если закончилась мелодия, то чтобы началась по новой играть). Если нужно было бы только это, то можно обойтись так: Код:
While 1 Код:
Function("File.wav", 1) ; Ноль если нужно просто один раз проиграть, а единица (1) для повторного проигрывания. 2) Мне нужно отнять от формата времени, определённое количество минут (до 60-ти), и нужно чтобы не просто отнимались числа от минут, а чтобы именно происходил подсчёт оставшегося времени (уитывая часы). Допустим, есть данное время 22:07:01 - И отняв от этого времени, допустим 8 минут, нужно чтобы получился такой результат - 21:59:01... Если речь идёт только о минутах (т.е без подсчёта часов), то я могу сделать это так: Код:
$Time = "22:07:01" |
1, Можно через вызов внешнего (скомпилированного) скрипта:
Код:
Func Function ($file, $play) Код:
While 1 Код:
$Time = "22:07:01" |
amel27
Цитата:
Пример который ты привёл, а точнее фраза которую я процетировал, навела меня на идею, которая решает эту проблему. Вместо того, чтобы запускать ещё один скрипт, можно запустить этот-же скрипт, но с параметром ком. строки, а запуск мелодии в цикле, поставить под условие - т.е если скрипт запущен с ключём, то запустить цыкл с проигрыванием мелодии: Код:
#NoTrayIcon Цитата:
Код:
$Time = 01:10:43 Есть один глупый вопрос, но я его всё же задам (любопытство преодаливает :tongue: ) - Чем отличаются между собой: @CR, @LF, и @CRLF ? |
Creat0R
Цитата:
Цитата:
Код:
$Time = "01:10:43" Цитата:
|
Creat0R
Цитата:
Только последний (сдвоенный) символ является полноценным идентификатором перевода строки и воспринимается всеми ОС DOS (собс-но, он в DOS-е и появился) и Windows (в *NIX, afaik, переводы строк совсем другие), но, в msgbox-ах можно без проблем исп-ть и "половинчатые" (@LF, @CR) переводы строк. |
amel27
Sanja Alone Спасибо вам, за столь исчерпывающие описания этих макросов :) amel27 Цитата:
|
Интересно, возможно ли осуществить проверку на подключённость к сети? Т.е проверять подключён ли компьютер к сети, или нет.
P.S: Кстати, я как-то пару страниц назад, спрашивал на счёт проверки на битую ссылку... так вот, оказалось что можно элементарно проверить является ли заданная ссылка битой - нужно просто попытаться узнать размер файла по ссылке: Код:
$Link = InetGetSize("http://test/test.zip") |
Creat0R
Цитата:
Код:
If Ping("www.google.com",3000) Then |
Sanja Alone
если человек сидит за проксёй это ничего не даст |
Цитата:
вот несколько модифицированный пример из справки: Код:
;Установка функции перехвата COM-ошибок |
amel27
Цитата:
Есть только один маленьки вопрос про... Цитата:
Код:
MsgBox (0,"Проверка связи","Интернет-соединение отсутствует: " & $oMyError) |
Creat0R
если код ошибки то $oMyError.number, другие параметры описаны в секции "Case Else" - на случай возникновения произвольных ошибок (кроме явно описанной для объекта WinHttp.WinHttpRequest) |
amel27
Мне нужно было именно описание ошибки ($oMyError.description), спасибо. ---------------------------------- Есть такой вопрос: Как можно переименовать все файлы с одним расширением, в те же имена, но до самого расширения добавить символы _1 - а если уже существуют такие имена, то вместо _1 нужно подставить _2 и т.д. Пробую так: Код:
FileCopy("*.dat", "*_1.dat") А добавление к коду определение на совпадение имён файлов (для замены _1 на последующие цыфры), я даже и не рискую делаь (если вообще смогу), т.к немогу решить первую проблему в задаче. Возможно ли это решить? |
Подскажите, как с помощью AutoIt, задать конкретному сетевому потключению общий доступ?
|
По поводу моего предыдущего вопроса - Можно хотябы сделать так, чтобы символы _1 добовлялись вместе с другим расширением, и чтобы если уже есть такие файлы, за место _1 писать _2 и т.д?
Не могу понять почему, но вот этот пример не работает как ожидается (мной): Код:
$Number = 1 Почему это происходит, и как исправить? ------------- Есть ещё один, более выжный вопрос... Как можно послать команду в винамп (Winamp), например, на проигрывание файла - не запуск винампа с ком. строкой ровняющейся имени файла, а именно вызов команды в самом винампе? Как я понимаю, нужно использовать ControlCommand, но как узнать какую команду посылать? Я пробовал так: Код:
ControlCommand("Player Window", "", "BaseWindow_RootWnd1", 4) Я бы мог конечно просто посылать нажатие клавиш, но мне нужно чтобы это происходило при свёрнутом окне винампа, а для посылки сочетании клавиш, нужно сделать WinActivate, или чтобы окно само было активным. |
Creat0R
Цитата:
Цитата:
Вот тебе код: Код:
;путь к Winamp |
Sanja Alone
Цитата:
В теории я понимаю как это сделать, но на практике, хоть убейте не получается. Вроде всё просто, уже как говорится, “рецепт написан”, но немогу сложить два плюс два. Если не трудно, покажи плиз как должен выглядеть скрипт, по вызову которого, будет делаться то что я спрашивал: Цитата:
Цитата:
Код:
$WinampPath=RegRead ( 'HKEY_CURRENT_USER\Software\Winamp', '' ) |
можно с помощью скрипта поменять имя рабочей группы и имя пользователя
мне нужно переделать ipset http://home.electronicinsanity.com/a...ipts/ipset.rar тоесть добавить ввод рабочей группы и имя комтьютера |
и ещё можно ли с помощью AutoIt скрипта настроить VPN соединение
|
Creat0R
вариант рабочей функции переименования (без контроля входных параматров!) - номера ранее переименованных файлов не трогаются, новые номера считаются от максимального существующего (поэтому возможны "дыры" в нумерации). По ходу производится приведение всех номеров к единому формату по количеству знаков в номере. Код:
#include <File.au3> |
garbals
Цитата:
|
amel27
Цитата:
Также эта функция переименовывает всего один раз, при повторном запуске, если существуют такие-же файлы, но с последующей цифрой (на одну больше), то эти файлы не переименовываются в существующие, но на одну цифру выше... Попробую перефразировать задачу: В папке c:\test, есть 3 файла (кроме прочих) - myfile.dat, hisfile.dat, aourfile.dat - после запуска скрипта, нужно чтобы эти файлы (именно с таким расширением), переименовались в такие имена - myfile_1.dat, hisfile_1.dat, aourfile_1.dat. Далее, при повторном запуске скрипта, если уже обнаружены такие файлы (myfile_1.dat, hisfile_1.dat, aourfile_1.dat), то именно их трогать ненужно, а нужно все остальные (с таким же расширением, и с таким же началом - до символа _), переименовать в такие файлы - myfile_2.dat, hisfile_2.dat, aourfile_2.dat, а те которые не совпадают в начале имени (до символа _), нужно переименовывать как и в первый раз (добовляя _1). Точно такой способ, реализован в утилите 7-zip, там при расспаковке файлов (через командную строку), можно указать ключ, который позволит именно этим способом переименовывать существующие файлы. |
Creat0R
Цитата:
Цитата:
Цитата:
Цитата:
FYI: скрипт подправил, теперь кол-во знаков в номере определяется автоматом |
amel27
Цитата:
Цитата:
|
Creat0R
Цитата:
- у ф-ции будет ДВА рабочих параметра (источник и приемник), а не один; - сравнивать нужно ПОФАЙЛОВО и расширение тут непричем (конфликтуют ИМЕНА, а не расширения сами по себе) Допустим, мы хотим проверить существование заданного файла в каталоге и вернуть его новое для этой папки (см. текст ф-ции), алгоритм будет следующий: перед записью в каталог файла (не из этого каталога!) возвращаем через функцию его новое имя и сохраняем уже под этим именем... если что в 7zip именно так. Код:
MsgBox (0,"",_FileNewName ("myfile.dat", "c:\Test")) |
amel27
Цитата:
Функция что ты привёл в пример, отлично справляется с задачей, если бы нужно было переименовывать файлы которые копируются, в таком случае, можно указать и все файлы с определённым расширением. Но мне нужно проверять именно файлы в том каталоге, куда будут копироваться файлы с другого каталога... Пример: Имеем два каталога, первый - “c:\test\a” (с которого будут копироваться файлы), второй - “c:\test\b” (в который должный помещаться файлы, и в котором должно проверяться совпадение имён). В каталоге “b”, перед копированием файлов с каталога “a”, нужно переименовать все файлы с расширением *.dat, но только те которые копируются. Т.е, если допустим, мы копируем два файла - filefirst.dat, filesecond.dat, то для них и нужно проверять совпадение в каталоге “c:\test\b”, если там такие файлы уже есть, то нужно переименовать их в те же имена + _1, но если уже есть и такие имена, то + _2 и т.д... Чтобы в результате, не было потерь никаких файлов, чтобы те файлы которые копируются с “c:\test\a”, в том же виде поместились в “c:\test\b”, а существующие файлы в “c:\test\b”, чтобы всегда переименовались и сохранялись под разными последовательными именами (с приставкой на конце _1, _2 и т.д). |
Извините, может этот вопрос уже поднимался но поиском ответа не нашел.
Опыта в AutoIt у меня очень мало, и я споткнулся еще на примерах к программе. У меня русскоязычная винда и хотелось бы писать на русском и английском языках скажем в блокноте и иметь доступ к меню (скажем через ALT). Проблема в следующем: англоязычные комбинации клавиш не проходят по определению, русскоязычные типа ALT+Ф проходят только если стоит русский язык по умолчанию, но тогда неправильно выводится англоязычный текст. Переключение текущего языка проблемы не решает, а переключения языка по умолчанию я не нашел. Объясните пожалуйста как решить подобную проблему. |
Creat0R
Цитата:
Цитата:
Код:
$sDir = c:\Source\ Код:
$sDir = c:\Source\ |
|
amel27
Нижний пример почти достигает желаемого результата. Пишу почти, так как есть один нюанс... При первом запуске скрипта, всё проходит отлично - файлы в папке назначения переименовываются в новые имена (с добавкой _1), а файлы с папки источника, копируются на место тех которые переименовались. Однако, после вторичного запуска скрипта, я ожидал чтобы те файлы (в папке назначения), имена которых совпадают с именами копируемых файлов (с папки источника), переименовались уже не в те же что и в первый раз (с добавкой _1), а в имена с добавкой последующей цифры тем что уже существуют (с добавкой _2 в этом случае). А файлы которые копируются, чтобы стали под их оригинальными именами в папку назначения. Таким образом, всегда будут сохраняться копии всех файлов, из всех попыток копирования файлов - но, рабочие файлы (те которые не должный переименовываться, т.е те которые копируются из папки источника), должный быть всегда под своими оригинальными именами, а те файлы (в папке назначения) которые были под этими же именами, должный всегда быть переименованы с добавкой _1, _2 и т.д, но чтобы были всегда последними в последовательности добавленных к ним цифрам. Я пытался самостоятельно переделать немного алгоритм, но никак не получается :( - Я понимаю что там требуется внести какое-то мелкое изменение, но оно должно быть правильное, и я пока этого сделать немогу, нехватает опыта что-ли... |
amel27
Цитата:
Мне всего лишь нужно было заместо перемещения, прописать копирование: Код:
$sDir = "c:\source\" |
Sanja Alone
WinAPI метод переключает раскладки а не изменяет язык по умолчанию. Переключать язык как я понял сугубо недостаточно. Нужно что бы менялся язык по умолчанию. Если язык по умолчанию русский то команда Send("!Ф") предположим, срабатывает, но тогда неправильно отображается английский текст. Да и надеяться что у пользователя язык по умолчанию будет русский (у меня у самого английский) не приходится. Так что нужен способ изменения языка по умолчанию. Я понимаю, что для автоматизации инсталляций работа с меню неактуальна, но неужели никто не задавался таким вопросом? |
Creat0R
Цитата:
FYI: подредактировал ф-цию _FileNewName... старый вариант был короче, но для файлов без расширений всегда возвращал на конце точку - для операций с файлами это не важно, а вот для сравнений не есть гут |
Вложений: 1
Всем здрасти!
Если кому нетрудно помогите с такой проблемкой. Вот написал скрипт для автоматической установки драйверов (просто автоматизировал "Мастер установки оборудования") для установки драйверов с CD. Так вот помогите зациклить процесс выполнения скрипта (сразу говорю я не программист, многое я не могу делать ) я попробовал сам сделать но не получилось. Заранее благодарен!!!! :) :) Все ребята разобрался сам.Всем спасибо! |
Мужики всем привет.
Если кому нетрудно объясните как правильно работать с функцией PixelSearch ( x , y ) Надо чтоб в клиентской части активного окна найден нужный цвета пиксель и если он найден происходит двойное нажание мыше в нужном месте окна. Делаю так Цитата:
|
Не подскажете - как убрать с помощью AutoIt часы на таскбаре
|
xstranger
Цитата:
Код:
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","HideClock","REG_DWORD",0x00000001) Код:
RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","HideClock") |
LORDMA
Цитата:
Тогда попробуй так: Код:
Opt("PixelCoordMode", 2) |
Запуск exe файла из определённой директории
Есть потребность запускать некоторые exe файлы с параметрами определённой директории (как правило "лечилки" от жадности), например, строчка:
Код:
Run("с:\program files\everest\crack.exe") Приходится обходиться батником в котором прописано: Код:
C: P. S. Я новичок, помидорами не кидать :) |
Lodoss
Код:
FileChangeDir ( @ProgramFilesDir & "\Everest" ) Цитата:
Код:
Run ( @ProgramFilesDir & "\Everest\crack.exe", @ProgramFilesDir & "\Everest" ) |
Вложений: 2
Вот кому интересно нацарапал пару скриптов для автоматизации установки
драйверов после установки операционки(звук ,видео,и т.д.). Нужно иметь только диск с распакованными драйверами, а скомпилированный скрипт запускать через autorun.inf Один скрипт определяет неустановленное оборудование по желтому пикселю, а второй просто клацает по списку устройств в верхней строчке пока невыскочет "Центр справки" Это мои первые скрипты, так что сильно несудите. Creat0R Большое спасибо,за помощь! |
может кто подскажет код скрипта который делает следующее
Имеются общие задачи дня н количества файлов например Код:
modifype file |
xstranger
Цитата:
Код:
#include <File.au3> |
Спасибо за ответ, но если можно немного по прозрачнее
опишу мою ситуацию. у меня системные файлы патчатся ресурсами в стиле висты на этапе RunOnceEx, так вот, я хотел бы поменять командный файл, на автоит скрипт. вот команды командного файла Код:
... и еще один вопрос. есть ли в автоит какое либо подобие xcopy? чтобы копировались только новые файлы, если есть, то скажите куда смотреть заранее спасибо |
Всем привет!
Может кто поможет. Есть такая необходтмость устанавливать софт с диска на компы(ежедневно около 20-30 компов).Основной комплект прог для большинства компов одинаков,но достаточно часто возникает нужда поставить стандартный комплект прог с небольшими изменениями (вместо одних прог поставить другие,например вместо windvd power dvd). Написал в AutoIt примитивный скрипт типа: Код:
run ("Multemedia\Burn disk\Nero\Nero6608a.exe") Заранее благодарен. |
xstranger
Цитата:
Цитата:
|
Michail77
Цитата:
Код:
#NoTrayIcon В примере я использовал метод диактивации гуи (Gui) перед выводом MsgBox (GUISetState(@SW_DISABLE)), и полсле нажатия на ОК, гуи активируется (GUISetState(@SW_ENABLE)). Но дело в том, что у меня, по не понятным причинам, после активации гуи, он как бы сворачивается. Почему это происходит, и как это предотвратить? - Я также в примере поставил активацию окна (WinActivate), но в момент активации окно на секунду мигает, хотелось бы достичь идеального способа диактивации и затем активации гуи интерфейса. |
Michail77
Цитата:
|
Есть два вопроса (взаимосвязаны между собой):
1) Как можно узнать общий размер всех файлов (в байтах или мб) с определённым расширением, но учитывать файлы в подкаталогах? - Есть функция _FileListToArray, но она не учитывает подкаталоги, может можно её как то улучшить? (там требуется #include <File.au3>). 2) Возможно ли вычислить самый новый файл (взять имя файла и путь к нему в масив), в определённом каталоге - файлы из подкаталогов тоже должны учитываться. |
Мне необходимо отобразить процесс копирования MS Office 2003 на жесткий диск, а затем отобразить сам процес установки через AutoIt.
Сделал это с помощью ProgressOn & ProgressSet... Не устраивает: во первых процегресс-бар при копировании не изменяется, а во время установки приложений прогресс бар переваливает за 100 проценнтов и установка приложения при этом продолжается: Код:
ProgressOn ('Копирование MS Office 2003 на жесткий диск','Прогресс','Выполнено',-1,-1,18) |
Creat0R
Цитата:
Код:
@echo off Цитата:
Код:
rem Каталог sattva Цитата:
|
Creat0R
Если только средствами AutoIt, то вот что получилось Код:
#include <File.au3> |
Вопрос, где в этом скрипте ошибка???
Код:
Run ("d:\1\Winamp 5.24\Winamp 5.24.exe") |
Sanja Alone
Цитата:
Цитата:
Код:
cd "путь\к папке" Код:
$NewFile = FileReadLIne("Test.tmp", 1) Цитата:
Angelus Цитата:
Код:
Opt("TrayIconDebug", 1) И когда запустишь скрипт, то наведи мышку на иконку скрипта в трее, и посмотри на какой строке “зависает” скрипт. Как я это вижу, скрипт зависает на одной из строк, содержащей WinWait или WinWaitActive - желательно ставить время, по истичению которого, скрипт больше не будет “ждать” появления окна или его активности... Код:
WinWaitActive("Заголовок", "Текст", 120) ;Где 120, это секунды, по истичению которых, скрипт “продолжит” дальше, вне зависимости от того, появилось\активировалось ли окно или нет. |
Creat0R
Цитата:
Angelus
|
Есть неплохая идея: написать оболочку (GUI) для авторизации запуска скрипта от имени админа.
начал писать и наткнулся на проблемку - незнаю как реализовать проверку строки RunAsSet на наличие прав администратора вот код: Код:
#include <GUIConstants.au3> Помогайте решать ! :) думаю вещь полезная и пригодиться многим. |
Lodoss
Цитата:
Код:
#include <GUIConstants.au3> |
Наваял тут скрипт для FastStone Image Viewer 2.8 с последующей русификацией.
Может, кому пригодится. Код:
RunWait (@ScriptDir&'\'&'fs.exe /S') ; Тихая установка самой программы |
2Sanja Alone
Да это, но наполовину. проверил: Если пользователь админ - оболочка не запускается как и хотелось , если GUI запускается проверка учётки на привелегии админа Код:
Case $msg = $ok и ещё вопрос можно ли в комбо списке сделать отображение учёток обладающих этими правами администратора :). в макро переменных нашёл только @UserName а можно ли получить список всех учёток зарегестрированых на компе и обладающих администраторскими привелегиями?. |
Как сделать закрытие окна (Alt+F4), например окно хелпа?!
|
TERMINAL
Цитата:
Код:
WinClose("Заголовок окна", "Текст окна") Код:
WinActivate("Заголовок окна", "Текст окна") |
Хотелось бы решить такую задачу...
Имеется файл, а в нём много разного текста, и нужно перечитать весь текст, и проверить, не содержатся ли в нём дубликаты определённой переменной. Т.е, допустим файл содержит такой текст: Код:
Первая строчка Нужно в этом файле вычеслить, повторяется ли этот самый текст (тот который в переменной), если есть совпадения, то желательно вернуть номер строчки где есть совпадение, и строку содержащюю найденый дубликат (в Array[1].. [2] и т.п). Возможно уже есть такая опция в AutoIt, но я что-то затрудняюсь найти в справке подобную функцию :( |
Creat0R
Спасибо тебе-(Send("!{F4}")) конкретно помогло. Вопрос ещё один. У меня в программе ACDSee 8 вводится ключ в поле регистрации,но на совремменых компах он успевает вводится, а на слабых компах скрипт успевает ввести только 4 первых символа (паузы почемуто непомогают). Как сделать чтобы скрипт дождался полного ввода серийника. Код:
Global $serial='12345-67890-12345-67890' |
Из скрипта запускается консольный nerocmd.exe. Можно ли как то получить данные, показываемые в консоли для отображения их в GUI автоита?
|
TERMINAL
Цитата:
Код:
ControlCommand("ACDSee 8 - InstallShield Wizard", "Customer Information", "Edit3", "EditPaste", $serial) Цитата:
Код:
Opt("WinTitleMatchMode", 4) VelDmi Цитата:
Код:
$NerocmdTxt = WinGetText("Заголовок консоли", "") |
Creat0R
<Нужно всё поместить в цикл, и в конце проверять существование окна...> А примерчик простенький можна? |
TERMINAL
Цитата:
Цикл: Код:
While 1 Код:
While 1 Код:
While 1 |
Creat0R
Цитата:
Код:
#include <File.au3> |
Lodoss
Цитата:
Код:
;=============================================================================== |
Я наверное плохо объяснил...
Суть проблемки с циклами вот в чём-программа имеет сетап и патч. При установки сетапа всё происходит ОК, а при установке патча (если нет видео драйверов) выдаётся ошибка и прекращается установка.Потом опять запускаешь патч до тех пор пока он не начинает сам ставится (это бывает от 1 до 2 раз). Вот я и хочу объяснить скрипту что если ничего не вылезет то можно продолжать установку (а не так как у тебя-ВЫХОД), а если вылезет окно ошибки, то нужно закрыть его и опять устанавливат этот патч пока он не установится. |
amel27
Цитата:
Просто дело в том, что задача у меня примерно такая: -Проверить файл на дубликаты определённово слова (а точнее ссылки), если есть таковы, то просто удалить все дубликаты, оставив один-“оригинал” - Как удалять я знаю, имея номера строк, я могу восспользоваться функцией _FileWriteToLine... Код:
#include <File.au3> --------------------------------- TERMINAL У тебя в примере, нет упоминания о патче, но попробую привести нужны пример на основе воображения :) : Код:
Opt("WinTitleMatchMode", 4) |
Нижеприведенная функция убивает все возможные окна от запущенного ей процесса и если какие-либо окна появлялись - перезапускает прогу заново (убиваются окна также дочерних процессов, просто одноименные окна\процессы не затрагиваются)
Код:
;~ Пример запускает+закрывает setup.exe: |
TERMINAL
Цитата:
Код:
$serial="серийник" |
Creat0R
Цитата:
|
Creat0R
Цитата:
Цитата:
Цитата:
Код:
#include <File.au3> |
amel27
Приогромное спасибо! Я думал что функция для моей задумки, будет выглядеть намного длинее :) В связи с тем, что эта функция относительно быстро срабатывает (я проверял на большом файле с текстом), у меня появился вопрос... У меня есть функция (от Sanja Alone), которая делает поиск по файлу, и если текст найден, то возвращается в Array[0] номер строки где был найден текст, а в Array[1] возвращается состав этой строки. Так вот, та функция, визуально большая, и большие файлы обрабатывает довольно долго (доходит до 5-ти секунд). И ещё, возвращается только первое-найденное вхождение, а хотелось бы точно также как и с твоей функцией, чтобы в массив возвращались все номера строк, и все содержания этих строк. В общем, вопрос в том, можно ли немного переделать эту функцию, чтобы вместо поиска дубляжей, искалось просто слово, и возвращались те же значения, что и в этой функции? (чтобы также можно было воспользоваться ими, ну, допустим для замены текста на что то другое - для этого у меня уже есть функция). |
Creat0R
Цитата:
Цитата:
в чем разница-то?.. возвращаются всегда все значения, просто при замене использовались не все (смотри пределы): Код:
For $i = $Array[0][0] to 2 Step -1 |
amel27
Ещё раз спасибо. В данном случае, нет необходимости в поиске текста содержащий кириллицу (разве что бывают ссылки с кириллицей :) ). |
1. Creat0R спасибо за скрипт, но он всеравно не подходит. В твоём скрипте постоянно, бесконечно стартует Setup.exe
При установке программы (например-Setup.exe) может вывалиться окно с ошибкой ERROR (ошибка вылетает в том случае если неустановлены видео драйвера), а может и не вывалиться (если же установлены видео драйвера). Так вот, хотелось бы чтобы скрипт работал как с установленными дровами так и без них. Т.е. при старте Setup.exe может установка прекратиться и вылезет окно ERROR-так можно этот файл стартовать до 3х раз-потом уже ошибка не вылетает и прога начинает устанавливаться, а может ошибка и не вылезти. ======================================================= 2. ПОМОГИТЕ НАЙТИ ОШИБКУ !!! Мне нужно убрать галочки при инсталяции (именно мышкой <ControlClick>)-написал такой скрипт, но он не убират галочки: HTML код:
WinWait("InstallShield Wizard","InstallShield Wizard Complete") |
TERMINAL
Цитата:
Цитата:
Код:
If WinExists("ERROR", "") Then ;Если окно с заголовком ERROR существует, то.... Цитата:
Код:
ControlClick("InstallShield Wizard","InstallShield Wizard Complete","Static1") |
amel27
Есть ещё небольшой вопрос, также немного затрагивающий функцию поиска дубликатов... Возможно ли сделать поиск по файлу на дубликаты, но заранее не знаяя вхождения? т.е нужно проверить все существующие строки в файле, и если хоть какая то из них имеет дубликат (именно по строке), то удалить все точно такие же строки, но оставив оригинал (для каждой такой найденной строки, произвести данную операцию - т.е удаление дубликатов найденных строк). Но, подвог (для меня) в том, что нужно удалить не именно те строки (их дубликаты), а те которые располагаются на три строчки выше. Вот пример файла: Код:
Первая строка P.S. В данном случае, скорость обработки, не очень уж важно, да и визуализация тоже :) - Главное функционал! |
Creat0R
Цитата:
Код:
#include <File.au3> |
amel27
Я извеняюсь, я не обращал внимания, но в том файле, для которго это будет делаться, есть дубли которые не должны быть тронуты. Т.е я даже заранее знаю начало строки - URL= но перед этим идёт таб (@Tab)... в общем, вот часть этого файла (это закладки от браузера Opera): Код:
#URL |
Creat0R
просто добавь еще один IF: Код:
... |
amel27
Цитата:
Цитата:
|
Creat0R
Цитата:
- читаем файл и сразу нумеруем записи по блокам (а не по строкам); - один из реквизитов (URL) оформляем как ключевой для блока; - формируем новый файл ссылок (поверх старого), но уже без дублей. З.Ы. обычно чем "правильней" алгоритм, тем он медленней |
amel27
Цитата:
Цитата:
Цитата:
|
Creat0R
Цитата:
применительно к твоему скрипту код можно еще укоротить: Код:
#include <File.au3> |
amel27
Цитата:
Цитата:
Дело вот в чём, браузер не всегда затирает нужные закладки, иногда, если были удалены заглавы (#URL) двух закладок (блоков) идущих подряд, то он удаляет иногда и ту закладку которая идёт выше этих двух. Может всё же как то можно чтобы уже сразу весь блок удалять? :blush2: Цитата:
|
Creat0R
Цитата:
1. перенес IF в код функции - это необязательно, но оптимизирует поиск дублей, 2. добавил удаление остальных строк блока (в обратном порядке!). Код:
#include <File.au3> Цитата:
|
Вложений: 1
amel27
Тоже есть трабла :( . Оказывается :) , иногда некоторых пунктов в этом блоке нету\есть, они не присутствует\присутствуют в том случае, либо, если у закладки нет\есть описании (DESCRIPTION), либо нет\есть код посещения (VISITED=), либо нет\есть код активвности (ACTIVE=). Вот как выглядит самый полный блок (т.е больше этих пунктов нет) : Код:
#URL Код:
#URL Код:
For $i=$DupLines [0][0] To 1 Step -1 Вот на всякий пожарный, прикладываю файл, содержащий дубликаты таких (разных) блоков. |
Creat0R
Цитата:
Код:
#include <File.au3> |
amel27
Удаляются не все дублирующиеся блоки :( - и как ни странно, не удалился дубль именно закладки этого поста :) (эксперементировал на прикреплённом мной раньше файле). |
Creat0R
Цитата:
Ладно, коли такое дело :) переделал функцию - теперь она возвращает начало и конец продублированных блоков (от содержания строки отказался, т.к. невостребовано). Далее - предыдущий вариант страдал нелогичностью по отношению к операциям ввода-вывода, то смотрим в массив, то в файл.... зачем тогда было его загружать?.. Поэтому все операции с файлом (в т.ч. удаление строк) переделал для массива, в заключении готовый массив выгружается поверх старого файла: Код:
#include <File.au3> |
:help: :help: :help: H E L P ! ! ! :help: :help: :help:
Написал кучу скриптов с помощью AutoIt и тут вдруг обновляется Dr.WEB и начинает запрещать работать с этим прекрасным редактором. Начал проверять свои рабочие скрипты-на половину все заражённые вирусом BackDoor.Hengto :vampire:.Скачал с оф.сайта опять эту прогу-проверил (в ней вирусы зашиты). Так почему же тогда раньше ВЕБ не кричал и почему не все тогда скрипты заражены??!! или у меня на компе просто глюк??? |
TERMINAL, у меня Nod32 одно время обзывал скрипт для генерации Inf как Trojan.Autoit.A - потом прошло... Хотя хз, мож ты чего-то и хватанул
|
TERMINAL
Цитата:
Цитата:
|
Да не должен подхватить-2 антивирусника стоят...
Облазил весь инет, попровирял разными антивирусниками-все отвечают что файл ОК - незаражон...,а ВЕБ орёт и блокирует. Может это у него такая реакция на скрипт??????,правда он не может сказать что файл якобы ВОЗМОЖНЫЙ ВИРУС-просто берёт и блокирует....У кого то такое было????????просто хочется быть уверенным что это из-за скрипта, а не вирус... |
Sanja Alone Я скачиваю повторно файл установки AutoIt с оф.сайта-начинаю устанавливать и ВЕБ начинает орать опять на установочные файлы.
НАРОД ПЛЗ ! Пришлите мне какой нибудь скрипт "ехе" упакованый с "au3" на trm6@mail.ru , а я его проверю.... |
amel27
Всё работает как по маслу! Огромное Мерсий! :pray: TERMINAL У меня тоже на несколько закомпилированных скриптов, Dr.Web ругается на вирус BackDoor.Hengto - Наверно это из за структуры самого скрипта. Но это не значит что там есть вирус, это значит что Dr.Web (и ему подобные) не достаточно “умный” (при всё уважении к нему :) ), чтобы определить является ли это действительно вирусром, и просто напросто перестроаховывается. У меня стоит последний Kaspersky, он молчит, также молчат проверки online, так что это глюк в этой базе данных доктора ;) (имхо). |
amel27
Есть небольшая пролблема с функцией, которую ты написал для проверки подключённости к интернету :( ... При проверке синтаксиса в SciTE, выдаётся ошибка, а именно, эта строка подчёркнута как ошибочная: Код:
SetError(err.number) |
Creat0R
опечатку исправил... только почему-то на моем компе она перестала работать - вываливает ошибку таймаута и все тут, хотя точно знаю что все работало!... уже и PROXYCFG проверил - ничего не помогает... ладно, сейчас некогда ковыряться может позже разберусь в чем причина. Цитата:
|
amel27
Если я сделаю так (см. ниже), будет ли это являться корректной проверкой подключения? Код:
;Установка функции перехвата COM-ошибок P.S: Просто интересно, как ты разукрасил код скрипта? :) неужели каждую команду (и разделители) обрамлял тегом цветов и выделения? |
Creat0R
Если речь про функцию MyErrFunc () то она построена некорректно, посуди сам что выходит: если ошибку вызвал модуль "WinHttp.WinHttpRequest" - устанавливаем только код ошибки и ничего не возвращаем, а если любой другой - только возвращаем текст ошибки... Если скрипт не отслеживает другие возможные ошибки кроме HTTP и тебе нужен не только номер, но и текст ошибки лучше сделать иначе Код:
;Установка функции перехвата COM-ошибок P.S. шалость удалась (c) :) ... конечно скриптом - больше ради прикола чем по необходимости, заодно разобрался с тегами форума и погонял функции StringRegExp*, если есть интерес то могу запостить... на самом деле все гораздо проще чем кажется. ;) |
amel27
В принципе, мне не нужен код ошибки, нужно только описание, т.е если и была ошибка (не важно какая), то нужно сообщать что она была, и по возможности выводить описание этой самой ошибки. И как я понял, используя пример из кода твоего поста (последнего), это оптимальное решение. Если честно, я смутно понимаю всю работу этой функции, для меня вообще много что связанно с интернетом, пока не очень ясно, я в сети не более полу года нахожусь, и тем более что тут не только о самих понятиях интернета идёт речь, но ещё и о модулях, о которых я только начинаю что то узнавать. Цитата:
Код:
$File = @ScriptFullPath |
Вложений: 1
Creat0R
По поводу раскраски кода (поскольку это решение на AutoIT то имхо не оффтоп) ... Замечу, что лобовое решение требует последовательного разбора всего текста кода по словарю, а это слишком большой объем работ... Но зачем изобретать велосипед, если SciTE4 уже делает это и весьма успешно? Одна из его возможностей - экспорт кода в HTML/XML-формат с сохранением всех стилей, осталось только определить соответствия между стилями XML и форума и произвести замену. Поэтому обработка проходит в два шага: экспорт кода в XML-файл и последующая обработка его скриптом - содержимое полученного TXT-файла (уже с тегами кода) можно публиковать в форуме. Поскольку текст скрипта напичкан всевозможными тегами вынужден прикрепить его отдельным файлом... P.S. Как видно из текста скрипта я определил еще не все стили (например пропущены 2, 10, 12, 13) и наверняка не все спецсимволы... они мне просто еще не попадались, на этот случай я оставил проверку на полноту замены... если кто обнаружит их раньше просьба сообщить в личку. линк: http://www.sendspace.com/file/wjwk9r -------- нормальные герои всегда идут в обход (c) :) |
amel27
Файл не скачивается :( - т.е скачивается, но архиватор ругается на то что архив повреждён... может зальёшь на http://www.sendspace.com/ - и\или мне на мыло? |
Отвечаю на повторяющийся по мылу вопрос. Итак, "Как же определить букву дисковода по маркерному файлу?"
|
2amel27
Цитата:
весь сыр бор был из-за GUI авторизации запуска от имени админа. повторю задачу: 1.Требуется запустить какой либо setup.exe, если пользователь не админ - нарисовать GUI с полем имени и пароля для авторизации запуска (конечно можно воспользоваться стандартным запуском нажав shift но хочется реализовать задачу при помощи AutoIt) 2.В комбо боксе приводим список учёток обладающими правами для установки т. е. админов 3.При неправильном вводе пароля - выдать сообщение об ошибке НЕ закрыв GUI повторю код Код:
#include <GUIConstants.au3> PS с оболочками только только начал разбираться, многое не понимаю. Помогите PLS |
Lodoss
Цитата:
Вот немного изменил - добавил проверку (отдельную) на проавильность ввода пароля (это при условии что пароль заранее известен): Код:
#include <GUIConstants.au3> |
amel27
Класный скрипт, как видно в посте чуть выше, я его уже приминил :) - Я тут немного повазился, и немного автоматизировал этот процесс, так что вот, залил ;) ПРИМЕЧАНИЕ: После завершения обработки, в первую и вторую строку самого скрипта, прописываются пути к файлу обработки (*.xml) и к выходному файлу (*.txt), и при повторном запуске скрипта, эти значения будут подставляться в соответствующие поля, так что эти строки лучше не трогать (для удобства). Можно было бы ещё лучше автоматизировать этот процесс, если бы можно было автоматичкский экспортировать указанный скрипт в *.xml формат - может можно как то задать параметры для SciTE, чтобы там в тихом режиме указанный файл экспортировался в нужный формат? Тогда можно было бы сразу указывать скрипт (*.au3), и всё бы происходило автоматом - минимальное вмешательство юзера ;) |
Цитата:
Это я тут в комбо списке написал "Администратор,admin.....так не должно быть. решение КАК выдать список учёток обладающими правами админа есть от amel27 (осталось только разобраться как это привинтить к комбо списку пользователей %) ) а пароль должен ввести только админ. Цитата:
1.заходим под обычным пользователем в систему если вводим правильные данные (админа)- запускается сценарий run("setup.exe").... 2.если вводим неправильный пароль то выдаётся сообщение "ошибка" и предлагается ввести пароль заново в существующем сценарии ошибка выдаётся даже если правильно ввёл пароль и файл setup.exe существует либо вообще ничего не происходит по нажатии кнопки ОК |
Lodoss
Вот рабочий (у меня) вариант (в нём уже включено помещение списка юзеров в combo) : Код:
#include <Array.au3> |
Цитата:
_NetLocalGroupGetMembers ("Администраторы", "", 0, 1) ...справедливости ради приведу еще один вариант функции через COM (взял с форума AutoIT): Код:
Func _NetLocalGroup ($HOST, $LocalGroup) |
Не пойму в чём проблема.... хочу осуществить замену текста в определённом каталоге у определённой группы файлов (по маске), но почему то функция которую я написал, не хочет этого делать :)
Код:
#include <File.au3> Всё, нашёл свою ошибку :) - См. подчёркнуты текст в коде - Там было $NewText. |
Sanja Alone, а можешь обновить свой скрипт для CuteFTP 8.0.3 с новым патчем (165 кб который)! Очень надо )))
|
Craager
Цитата:
|
в AutoIt как лучше захватить системную дату? Есть ли вообще такая возможность (не прибегая к хитростным изворотам и изворотливым ухищрениям?)
в идеале интересует дата в опр. формате (напр. YYYYMMDD или MMDDYY), для дальнейшего использования в качестве переменной. |
Нужна помощь.
Вот скрипт.Автор его Creat0R за что ему ОГРОМНАЯ БЛАГОДАРНОСТЬ. Нужно чтобы при отметке установки нескольких программ они запускались поочерёдно. Как это сделать? Код:
#NoTrayIcon |
Yozhegg
Цитата:
Код:
@SEC - Значение секунд на часах. От 00 до 59 Код:
MsgBox (0,"Текущая дата",@YEAR & @MON & @MDAY) |
To Sanja Alone: Благодарю за ответ. Спустя 24 часа оценил некоторую поспешность вопроса. Покопавшись в хелпе нашёл эти макросы, но меня смущало отсутствие
возможности форматирования.. мне нужно было (ГГММДД)... Код:
Global $y = @YEAR |
А как в AutoIt снять показание с RadioButton(OptionButton)?
Ischecked -это параметр, или макрос, которым можно проверить отмечена радиокнопка 1 или радиокнопка 2? |
Yozhegg
Цитата:
Цитата:
Код:
If BitAnd(GUICtrlRead($Radio_1),$GUI_CHECKED) Then Цитата:
|
Michail77
Цитата:
И ещё, если установка того или иного приложения, “запускает” внешние модули\приложения, то нужно определить какие именно, т.е какие процессы, или окна появляются, и в соответствии с этим делать проверку на окончание процесса установки. Если же всё обходится (заканчивается) одним процессом (не запуская внешние\дополнительные процессы\окна), то досаточно того метода который я упомянул чуть выше. ---------------------- 2 ALL Есть такая проблема - Я хочу сделать проверку на нажатие определённой клавиши, кнопки мышки, или любого другого действия со стороны пользователя. Известно что есть функция _IsPressed - Но она проверяет каждый раз ввод\нажатие одной клавиши\кнопки, а мне нужно чтобы проверялось любое вхождение при одной (или даже нескольких) проверке... я сделал это для нескольких вхождении, но предусмотреть все, мне не удалось... Код:
For $i = 01 to 91 ---------------------- P.S Переделал полностью (кроме самой главной функции от amel27) скрипт для перекодировки скриптов в целях помещения их в форуме (в разукрашенном виде :) )... получилось полностью автоматизировать весь процессс - теперь не нужно самому экспортировать скрипт au3 в xml формат, это сделает автоматический сам скрипт, нужно всего лишь указать файл скрипта (*.au3), и в процессе (до процесса) обработки, он будет экспортирован в xml формат - Для этого редактор SciTE должен быть в дефолтной папке AutoIt'а, т.е путь берётся относительно @AutoItExe: Код:
$SciTEPath = StringTrimRight(FileGetShortName(@AutoItExe), StringLen(StringRegExpReplace(@AutoItExe, "^.*\\", ""))) & "SciTE\SciTE.exe" И ещё, теперь данные для последнего используемого скрипта (и файла в который будет помещён результат), вписываются в конец самого скрипта, и считываются как с файла конфигурации (*.ini), мне кажется так надёжнее. Так что компилировать скрипт нет смысла, а если есть желание, то лучше исключить из скрипта эту функцию. Скачать архив со скриптом можно тут |
2 Creat0R
БИГ СЕНКС. И ещё вопросик.как запустить на установку файл *msi. речь идёт про касперского антивирус 6.0.300 с 5х проблем не было. run-ом всё нормально ставилось а тут.... |
|
2 Creat0R
Спасибо. Приведи пожалуйста пример с “запускает” внешние модули\приложения... 2 Sanja Alone Спасибо,помогло. |
Michail77
Цитата:
Код:
RunWait("Setup.exe", "", @SW_HIDE) ;Запуск главного установщика |
Michail77
Creat0R Цитата:
|
Вопрос.Можно ли сделать так чтобы в Msgbox была фоновая картинка,т.е есть примитивный код:
Msgbox (0, ".........................." &@CRLF& "............................." и т.д Нужно чтобы была фоновая картинка а поверх неё писался бы текст как в обычом Msgbox-е Как это сделать? И ещё такой вопрос.Как запустить *.bat? Сделал компактный Office 2003. занимает 105мб места. Если пишу так Run(RunWait) ("office/setup.bat") то появляется и сразу исчезает окно Dos-эмулятора. Как сделать правильно чтобы всё работало? Заранее спасибо. |
Michail77
Цитата:
Цитата:
Цитата:
Я обычно запускаю батник (хотя стараюсь выполнять его функции в самом скрипте) таким образом: Код:
RunWait(@ScriptDir & "\Batnik.bat", "", @SW_HIDE) Код:
Run(@ComSpec & " /c start .....", "", @SW_HIDE) По поводу MsgBox'ов (и не только), у меня тоже есть один вопрос... -Возможно ли привязать MsgBox, или любое из окон вызываемое для выбора/сохранения файла/папки (FileSelectFolder к примеру), к окну гуи? т.е чтобы при вызове одного их этих окон, оно было уже как бы дочерним окном гуи, и чтобы не было доступа к родительскому окну (гуи) до тех пор пока не закроется это-дочернее окно. Знаю что для обычных, гуивских дочерних окон, можно прописать как последний параметр переменную определяющую относительность к родительскому гуи, и также нужно неитрализовать родительский гуи макросом @SW_DISABLE, но как такое же сделать с окнами вызыванными по FileSelectFolder, FileOpenDialog, FileSaveDialog или даже тот же MsgBox? для этих окон вроде нет такого параметра, который определял бы их относительность к гуи. |
Всем добрый день!
Господа, вопрос, возможно, глупый, но может ли скрипт написаный с помощью AutoIt работать на компьютере к которому не подключен монитор? |
Dentel
Будет. |
qeraser
Не работает. У меня есть сервер, к которому не подключен монитор. На сервере установлена WinXP. Захожу на этот сервер с помощью "Подключение к удаленному рабочему столу" через локальную сеть. На сервере вылажен скрипт. Если "подключение" активно, то скрипт работает и делает то, что надо. Если "подключение" закрыто, скрипт глохнет в самом начале, а именно: началом работы скрипта является запуск программы (вылезает окно авторизации), далее с помощью WinWaitActive определяем, что это окно активно и дальше понеслась (ввод пароля, логина ну т.д. и т.п.). В случае если "подключение" не активно, то скрипт "не видит" это окно авторизации и оно просто висит и ничего не происходит. |
Creat0R
А чем не устраивает простое отключение/включение родительского окна? Код:
#include <GUIConstants.au3> |
amel27
Цитата:
В идеале, хочется чтобы можно было вызвать окно сохранения (к примеру), и нажимая на окно гуи, чтобы вызванное окно мигало, точно также как это происходит если вызвать дочернее окно гуи... вот пример: Код:
#include <GUIConstants.au3> P.S Вместо WinSetState лучше GuiSetState, и порядок таких объявлении очень важен... если именно для дочернего гуи, то так как я привёл в посте (@SW_HIDE в конце), это идеальный способ (таким образом не мигает окно родительского гуи в момент его активации). И ещё, вместо WinActivate("Title") лучше WinSetState("Title", "", @SW_RESTORE), это если для гуи, оно быстрее срабатывает. P.S.S. А ты не знаешь случам как решить задачку про проверку на нажатие определённой клавиши, кнопки мышки, или любого другого действия со стороны пользователя? (Которую я тоже привёл в посте со скриптом для разукрашивания). |
Dentel
Цитата:
|
Creat0R
Цитата:
Код:
#include <GUIConstants.au3> |
Creat0R
Цитата:
- нет надежных средств для снятия состояния клавиатуры, пользовательские программы работают с виртуальной, а не реальной клавиатурой; - существуют API-функции, позволяющие снимать состояние всех клавиш виртуальной клавиатуры за один вызов, т.е. возможно отслеживать все действия пользователя, но пока активно окно приложения. |
Время: 05:34. |
Время: 05:34.
© OSzone.net 2001-