|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты |
|
[архив - Часть 2] AutoIt скрипты
|
(*.*) Сообщения: 36554 |
Профиль | Сайт | Отправить PM | Цитировать
Внимание! Тема переведена в архивное состояние Текущая тема http://forum.oszone.net/thread-98914.html (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать spooll
У тебя ошибка в синтаксисе функции "$ret=WinWaitActive("Создание нового каталога", 20)" Цитата:
|
|
------- Последний раз редактировалось Maza Faka, 08-08-2007 в 16:46. Причина: Дополнение Отправлено: 16:41, 08-08-2007 | #261 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Maza Faka,
лично у меня не пашет вот эта строка
Цитата Maza Faka:
|
|
Отправлено: 17:30, 08-08-2007 | #262 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать spooll
Цитата:
Лично я бы использовал только WinWait() и ControlClick(). Во-первых, при этом отпадает необходимость в BlockInput(), во-вторых, ControlClick() обращается непосредственно к элементу(кнопке), поэтому вероятность ошибки здесь минимальна. |
|
Отправлено: 23:06, 08-08-2007 | #263 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Я пока остановился на таком решении: Можешь плиз потвердить, возвращает ли оно у тебя правильный заголовок с окна сохранения (любой программы)? spooll, Во-первых для ручного отключения BlockInput() не нужно жать ресет, нужно вызвать сочетания клавиш Ctrl Alt Del Во-вторых, зачем тебе постоянно ждать активность окна? можно просто ждать появление окна (WinWait()). Цитата:
Вот пример как ты можешь это сделать: ;Предотвращаем вылет скрипта в случае не удачного запуска программ Opt("RunErrorsFatal", 0) If FileExists("C:\Program Files\1Cv77\BIN\1CV7s.exe") Then Exit BlockInput(1) Run("\\192.168.11.198\Distrib\1s_install\B770023\Disk1\setup.exe") If @error Then Quit() WinWait("Добро пожаловать", "Добро пожаловать в программу установки", 20) ControlClick("Добро пожаловать", "Добро пожаловать в программу установки", "Button") WinWait("Выбор варианта установки", "Выберите вариант установки программы", 20) ControlClick("Выбор варианта установки", "Выберите вариант установки программы", "Button") WinWait("Информация о пользователе", "Введите Ваше имя и название", 20) ControlClick("Информация о пользователе", "Введите Ваше имя и название", "Button") WinWait("Информация о пользователе", "Вы сообщили следующую информацию", 20) ControlClick("Информация о пользователе", "Вы сообщили следующую информацию", "Button") WinWait("Выбор каталога для установки", "Программа установки поместит 1С", 20) ControlClick("Выбор каталога для установки", "Программа установки поместит 1С", "Button") WinWait("Создание нового каталога", "", 20) ControlClick("Создание нового каталога", "", "Button") WinWait("Выбор программной группы", "Выберите из существующих или", 20) ControlClick("Выбор программной группы", "", "Button") WinWait("Установка 1С:Предприятия", "Программа установки скопировала файлы", 20) ControlClick("Установка 1С:Предприятия", "Программа установки скопировала файлы", "Button") WinWait("Установка 1С:Предприятия", "Установка программы 1С", 20) ControlClick("Установка 1С:Предприятия", "Установка программы 1С", "Button") Run("\\192.168.11.198\Distrib\1s_install\B770025\Disk1\setup.exe") If @error Then Quit() WinWait("Добро пожаловать", "Добро пожаловать в программу установки", 20) ControlClick("Добро пожаловать", "Добро пожаловать в программу установки", "Button") WinWait("Список установленных программ", "Из списка найденных на данном компьютере", 20) ControlClick("Список установленных программ", "Из списка найденных на данном компьютере", "Button") WinWait("Обновление 1С:Предприятия", "При работе с сетевыми версиями", 20) ControlClick("Обновление 1С:Предприятия", "При работе с сетевыми версиями", "Button") WinWait("Обновление 1С:Предприятия", "Обновление программы 1С", 20) ControlClick("Обновление 1С:Предприятия", "Обновление программы 1С", "Button") Run("\\192.168.11.198\Distrib\1s_install\B770025\1C_patch_7725\1Cv77SQL_025_Patch.exe") If @error Then Quit() WinWait("Патч 1С:Предприятие 7.7.025", "Вы запустили программу", 20) ControlClick("Патч 1С:Предприятие 7.7.025", "Вы запустили программу", "Button1") WinWait("PatchWise Updater", "", 20) ControlClick("PatchWise Updater", "", "Button") ControlClick("Патч 1С:Предприятие 7.7.025", "Вы запустили программу", "Button2") Quit() Func Quit() BlockInput(0) Exit EndFunc Везде где в функции ControlClick встречается "Button", замени на настоящее имя контроля (используя утилиту Au3Info.exe). |
||||||
------- Отправлено: 23:10, 08-08-2007 | #264 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Maza Faka,
Цитата:
Дело в том, что многие плейлисты содержат пути относительно корню диска, т.е типа такого: \My Music\Vechnoya Moladast.mp3 Если скрипт лежит к примеру в папке C:\test, и файл находится по этому пути: C:\My Music\Vechnoya Moladast.mp3, то считав тот относительный путь файл будет проирываться. Я у себя в плеере для этого сделал поддержку глобальных путей, при каждой попытке проиграть файл, проверяются все пути (записанные в массив при открытии плейлиста и проигрывании файла), в первую очередь естественно проверяется корень диска, затем по очереди все остальные пути, в которых кстати включён рабочий каталог (потому как он задаётся авоматом функцией FileOpenDialog) и каталог в котором находится сам скрипт. |
|
------- Отправлено: 23:27, 08-08-2007 | #265 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать VelDmi,
Цитата:
#NoTrayIcon Opt("WinTitleMatchMode", 4) Global $MonitorIsOff = False HotKeySet("{F11}", "Monitor_Off") HotKeySet("{F10}", "Monitor_On") HotKeySet("{Esc}", "Quit") While 1 Sleep(10) WEnd Func Quit() Monitor_On() Exit EndFunc Func Monitor_On() Local $hwnd = WinGetHandle('classname=Progman') DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hwnd, 'int', 274, 'int', 61808, 'int', -1) $MonitorIsOff = False EndFunc Func Monitor_Off() $MonitorIsOff = True Local $hwnd = WinGetHandle('classname=Progman') While $MonitorIsOff = True DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hwnd, 'int', 274, 'int', 61808, 'int', 2) Sleep(10) _IdleWaitCommit(0) WEnd EndFunc Func _IdleWaitCommit($idlesec) Local $iSave, $LastInputInfo = DllStructCreate ("uint;dword") DllStructSetData ($LastInputInfo, 1, DllStructGetSize ($LastInputInfo)) DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo)) Do $iSave = DllStructGetData ($LastInputInfo, 2) Sleep(100) DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo)) Until (DllStructGetData ($LastInputInfo, 2)-$iSave) > $idlesec Or $MonitorIsOff = False Return DllStructGetData ($LastInputInfo, 2)-$iSave EndFunc При этом любые сочетания клавиш действуют как обычно. Это конечно не то что требуется, наверняка(?) можно полностью выключить монитор, но это тоже решение |
|
------- Отправлено: 23:59, 08-08-2007 | #266 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Накалякал тут функцию для конвертирования даты и времени в настойщий фрмат, но может это возможно сделать более укророченным путём?, а главное, чтобвы срабатывало быстрее:
$FullDateTime = _DateTimeConvertFormat("DD/MM/YYYY, HH:MM:SS") MsgBox(64, "Date/Time Convert Results", $FullDateTime) Func _DateTimeConvertFormat($sFormat) Local $RetDateTime Local $Year_Raw = @YEAR Local $Year_Part = StringRight($Year_Raw, 2) Local $Mounth_Raw = @MON Local $Mounth_Part = StringRight($Mounth_Raw, 1) If $Mounth_Raw > 9 Then $Mounth_Part = $Mounth_Raw Local $Day_Raw = @MDAY Local $Day_Part = StringRight($Day_Raw, 1) If $Day_Raw > 9 Then $Day_Part = $Day_Raw Local $Hours_Raw = @HOUR Local $Hours_Part = StringRight($Hours_Raw, 1) If $Hours_Raw > 9 Then $Hours_Part = $Hours_Raw Local $Minutes_Raw = @MIN Local $Minutes_Part = StringRight($Minutes_Raw, 1) If $Minutes_Raw > 9 Then $Minutes_Part = $Minutes_Raw Local $Seconds_Raw = @SEC Local $Seconds_Part = StringRight($Seconds_Raw, 1) If $Seconds_Raw > 9 Then $Seconds_Part = $Seconds_Raw $RetDateTime = StringReplace($sFormat, "yyyy", $Year_Raw) $RetDateTime = StringRegExpReplace($RetDateTime, "(?i)y+", $Year_Part) $RetDateTime = StringReplace($RetDateTime, "mm", $Mounth_Raw) $RetDateTime = StringReplace($RetDateTime, "m", $Mounth_Part) $RetDateTime = StringReplace($RetDateTime, "dd", $Day_Raw) $RetDateTime = StringReplace($RetDateTime, "d", $Day_Part) $RetDateTime = StringReplace($RetDateTime, "hh", $Hours_Raw) $RetDateTime = StringReplace($RetDateTime, "h", $Hours_Part) $RetDateTime = StringReplace($RetDateTime, "mm", $Minutes_Raw) $RetDateTime = StringReplace($RetDateTime, "m", $Minutes_Part) $RetDateTime = StringReplace($RetDateTime, "ss", $Seconds_Raw) $RetDateTime = StringReplace($RetDateTime, "s", $Seconds_Part) Return $RetDateTime EndFunc |
------- Отправлено: 04:57, 09-08-2007 | #267 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать VelDmi
Цитата:
Creat0R Цитата:
Цитата:
Цитата:
Цитата:
|
|||||
Последний раз редактировалось amel27, 09-08-2007 в 08:35. Отправлено: 08:23, 09-08-2007 | #268 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Написан скрипт автоматической установки ПО. При обычном запуске все работает отлично. При включении этого скрипта во входной скрипт подключения к домену он начинает работать, скачивает необходимые файлы, распаковывает, запускает, но затем появляется окно мастера установки, и инструкции ControlClick не отрабатываются, хотя на обычное нажатие кнопок реагирует адекватно.
Предполагаю, что это может быть связано с тем, что входной скрипт отрабатывается в фоновом режиме, но решения придумать не могу. |
Отправлено: 08:52, 09-08-2007 | #269 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата:
Цитата:
Цитата:
Цитата:
Opt("WinTitleMatchMode", 4) $Title = WinGetTitle("classname=#32770", "FolderView") If $Title = 0 Then $Title = WinGetTitle("classname=bosa_sdm_Microsoft Office Word 11.0", "FolderView") ConsoleWrite($Title) Opt("WinTitleMatchMode", 4) $Title = WinGetTitle("classname+regexp=bosa_sdm(.*)", "FolderView") Цитата:
Цитата:
А по поводу двух функции, не обязательно: Правда в этом случае формат месяца может быть передан только как MM. |
||||||
------- Отправлено: 09:05, 09-08-2007 | #270 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[Архив - Часть 1.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
[Архив - Часть 1.2] AutoIt скрипты | Dirk Diggler | AutoIt | 505 | 02-12-2006 11:00 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|