|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.3] AutoIt скрипты |
|
[Архив - Часть 1.3] AutoIt скрипты
|
Старожил Сообщения: 250 |
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. Помогите пожалуйста. Нужен маленький скриптик для решения некоторых рутинных задачь. Вот что нужно сделать последовательно: 1) в папке DIR1 находим и удаляем файлы в названии которых присутствует text_1 2) в папке DIR2 находим xxx.sif и удаляем строки, в которых присутствует text_1 3) в папке DIR3 находим xxx.inf и добавляем в его секцию [XXX] несколько строчкек (text_2, text_3, ..., text_n) 4) в папке DIR4 находим yyy.inf ищем в его секции [YYY] text_4 и заменяем его на text_5 5) сохраняем все изменения и выводим отчёт о проделанной работе :-) Заранее благодарен. |
|
Отправлено: 05:05, 03-12-2006 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать _Flame_
Цитата:
DenchikK Цитата:
;---это в начало файла--- #include <File.au3> ;------------------------ ; Построение GUI GUICreate("Автозаполнение", 330, 300) Global $Links_Array _FileReadToArray("links.txt", $Links_Array) If IsArray($Links_Array) Then $Top = 10 For $i = 1 To $Links_Array[0] GUICtrlCreateCheckbox($Links_Array[$i], 10, $Top, 180, 20) $Top += 20 Next EndIf $Start = GUICtrlCreateButton("Заполнить", 200, 10, 120, 20) $Close = GUICtrlCreateButton("Выход", 200, 30, 120, 20) GUISetState() |
||
------- Отправлено: 19:20, 31-05-2007 | #451 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 282
|
Профиль | Отправить PM | Цитировать Creat0R
Спасибо большое! Построение GUI идет как надо, но вот только теперь я не понимаю, как обрабатывать эти чекбоксы... Не понимаю, как это: If GUICtrlRead($checkCN1) = 1 Then WinActivate ("AvaRemoteLoad") ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[1] ) ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[1]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[1]) EndIf Тупо заделал так, но теряется возможность определять, сколько чекбоксов надо сделать для содержимого файла логов: #include <GUIConstants.au3> #include <File.au3> If WinExists(@ScriptName) Then Exit AutoItWinSetTitle(@ScriptName) AutoItSetOption("TrayIconDebug", 1) AutoItSetOption("SendKeyDelay", 60) AutoItSetOption("MouseCoordMode", 0) ; Запуск программы Run ('avaload.exe') ; Построение GUI GUICreate("Автозаполнение", 330, 300) Global $Links_Array, $Logins_Array, $Pass_Array _FileReadToArray("logins.txt", $Logins_Array) _FileReadToArray("pass.txt", $Pass_Array) _FileReadToArray("links.txt", $Links_Array) $checkCN1 = GUICtrlCreateCheckbox ($Logins_Array[1], 10, 10, 180, 20) $checkCN2 = GUICtrlCreateCheckbox ($Logins_Array[2], 10, 30, 180, 20) $checkCN3 = GUICtrlCreateCheckbox ($Logins_Array[3], 10, 50, 180, 20) $checkCN4 = GUICtrlCreateCheckbox ($Logins_Array[4], 10, 70, 180, 20) $checkCN5 = GUICtrlCreateCheckbox ($Logins_Array[5], 10, 90, 180, 20) $checkCN6 = GUICtrlCreateCheckbox ($Logins_Array[6], 10, 110, 180, 20) $checkCN7 = GUICtrlCreateCheckbox ($Logins_Array[7], 10, 130, 180, 20) $checkCN8 = GUICtrlCreateCheckbox ($Logins_Array[8], 10, 150, 180, 20) $checkCN9 = GUICtrlCreateCheckbox ($Logins_Array[9], 10, 170, 180, 20) $checkCN10 = GUICtrlCreateCheckbox ($Logins_Array[9], 10, 190, 180, 20) $Start = GUICtrlCreateButton("Заполнить", 200, 10, 120, 20) $Close = GUICtrlCreateButton("Выход", 200, 30, 120, 20) GUISetState () ; Основная Работа Скрипта While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Or $msg = $Close Then Exit ElseIf $msg = $Start Then If GUICtrlRead($checkCN1) = 1 Then WinActivate ("AvaRemoteLoad") ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[1]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[1]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[1]) EndIf If GUICtrlRead($checkCN2) = 1 Then WinActivate ("AvaRemoteLoad") ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[2]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[2]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[2]) EndIf If GUICtrlRead($checkCN3) = 1 Then WinActivate ("AvaRemoteLoad") ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[3]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[3]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[3]) EndIf If GUICtrlRead($checkCN4) = 1 Then WinActivate ("AvaRemoteLoad") ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[4]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[4]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[4]) EndIf If GUICtrlRead($checkCN5) = 1 Then WinActivate ("AvaRemoteLoad") ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[5]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[5]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[5]) EndIf If GUICtrlRead($checkCN6) = 1 Then WinActivate ("AvaRemoteLoad") ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[5]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[5]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[5]) EndIf If GUICtrlRead($checkCN7) = 1 Then WinActivate ("AvaRemoteLoad") ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[7]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[7]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[7]) EndIf If GUICtrlRead($checkCN8) = 1 Then WinActivate ("AvaRemoteLoad") ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[8]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[8]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[8]) EndIf If GUICtrlRead($checkCN9) = 1 Then WinActivate ("AvaRemoteLoad") ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[9]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[9]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[9]) EndIf If GUICtrlRead($checkCN10) = 1 Then WinActivate ("AvaRemoteLoad") ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[10]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[10]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[10]) EndIf EndIf WEnd |
Последний раз редактировалось DenchikK, 01-06-2007 в 02:54. Отправлено: 01:47, 01-06-2007 | #452 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать DenchikK
Цитата:
Лучше (надёжнее) проверять все чекбоксы, а нужный текст брать из самого названия чекбокса, ведь каждый зажатый чекбокс (который мы и будем проверять), имеет то название, которое и требуется для записи... Я бы если честно предложил использовать события (Events), правда придётся немного переделать структуру всего GUI (не сильно ![]() #include <GUIConstants.au3> #include <File.au3> If WinExists(@ScriptName) Then Exit AutoItWinSetTitle(@ScriptName) Opt("TrayIconDebug", 1) Opt("SendKeyDelay", 60) Opt("MouseCoordMode", 0) Opt("GuiOnEventMode", 1) Global $Array_logins, $Array_pass, $Array_links, $CheckBoxIDArray[1] ; Чтение Файла С Логинами _FileReadToArray("logins.txt", $Array_logins) If @error Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf ; Чтение Файла С Паролями _FileReadToArray("pass.txt", $Array_pass) If @error Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf ; Чтение Файла С Линками _FileReadToArray("links.txt", $Array_links) If @error Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf ; Запуск программы Run ('avaload.exe') ; Построение GUI GUICreate("Автозаполнение", 330, 300) GUISetOnEvent(-3, "Quit") $Top = 10 $Left = 10 ;Чекбоксы для логинов If IsArray($Array_logins) Then For $i = 1 To $Array_logins[0] ReDim $CheckBoxIDArray[UBound($CheckBoxIDArray)+1] $CheckBoxIDArray[UBound($CheckBoxIDArray)-1] = GUICtrlCreateCheckbox($Array_logins[$i], $Left, $Top, 180, 20) $Top += 20 If $Top >= 200 Then $Top = 10 $Left += 90 EndIf Next EndIf ;Чекбоксы для паролей If IsArray($Array_pass) Then For $i = 1 To $Array_pass[0] ReDim $CheckBoxIDArray[UBound($CheckBoxIDArray)+1] $CheckBoxIDArray[UBound($CheckBoxIDArray)-1] = GUICtrlCreateCheckbox($Array_pass[$i], $Left, $Top, 180, 20) $Top += 20 If $Top >= 160 Then $Top = 10 $Left += 90 EndIf Next EndIf ;Чекбоксы для линков If IsArray($Array_links) Then For $i = 1 To $Array_links[0] ReDim $CheckBoxIDArray[UBound($CheckBoxIDArray)+1] $CheckBoxIDArray[UBound($CheckBoxIDArray)-1] = GUICtrlCreateCheckbox($Array_links[$i], $Left, $Top, 180, 20) $Top += 20 If $Top >= 160 Then $Top = 10 $Left += 90 EndIf Next EndIf $Start = GUICtrlCreateButton("Заполнить", 200, 10, 120, 20) GUICtrlSetOnEvent($Start, "Start") $Close = GUICtrlCreateButton("Выход", 200, 30, 120, 20) GUICtrlSetOnEvent($Close, "Quit") GUISetState() While 1 Sleep(10) WEnd ; Основная Работа Скрипта - функция для обработки чекбоксов Func Start() For $i = 1 To UBound($CheckBoxIDArray)-1 If GUICtrlRead($CheckBoxIDArray[$i]) = 1 Then WinActivate("AvaRemoteLoad") $CurrentText = GUICtrlRead($CheckBoxIDArray[$i], 1) ControlSetText('AvaRemoteLoad', '', 'Edit1', $CurrentText) ControlSetText('AvaRemoteLoad', '', 'Edit2', $CurrentText) ControlSetText('AvaRemoteLoad', '', 'Edit3', $CurrentText) EndIf Next EndFunc Func Quit() Exit EndFunc Кстати, (кажется в последних версиях AutoIt) не обязательно активировать окно для ControlSetText() ![]() |
|
------- Отправлено: 03:45, 01-06-2007 | #453 |
Старожил Сообщения: 282
|
Профиль | Отправить PM | Цитировать Creat0R
Ещё раз огромное спасибо! Но я что то пока так и не смог разобраться, как же всё это работает... Эти строки я убрал, так они не нужны и мешают (идея какая - если выбран 3 логин, то выбираются вместе с ним 3 пасс и 3 линк): ;Чекбоксы для паролей If IsArray($Array_pass) Then For $i = 1 To $Array_pass[0] ReDim $CheckBoxIDArray[UBound($CheckBoxIDArray)+1] $CheckBoxIDArray[UBound($CheckBoxIDArray)-1] = GUICtrlCreateCheckbox($Array_pass[$i], $Left, $Top, 180, 20) $Top += 20 If $Top >= 160 Then $Top = 10 $Left += 90 EndIf Next EndIf ;Чекбоксы для линков If IsArray($Array_links) Then For $i = 1 To $Array_links[0] ReDim $CheckBoxIDArray[UBound($CheckBoxIDArray)+1] $CheckBoxIDArray[UBound($CheckBoxIDArray)-1] = GUICtrlCreateCheckbox($Array_links[$i], $Left, $Top, 180, 20) $Top += 20 If $Top >= 160 Then $Top = 10 $Left += 90 EndIf Next EndIf ; Основная Работа Скрипта - функция для обработки чекбоксов Func Start() For $i = 1 To UBound($CheckBoxIDArray)-1 If GUICtrlRead($CheckBoxIDArray[$i]) = 1 Then WinActivate("AvaRemoteLoad") $CurrentText = GUICtrlRead($CheckBoxIDArray[$i], 1) ControlSetText('AvaRemoteLoad', '', 'Edit1', $CurrentText) ControlSetText('AvaRemoteLoad', '', 'Edit2', $CurrentText) ControlSetText('AvaRemoteLoad', '', 'Edit3', $CurrentText) EndIf Next EndFunc И скорее всего придётся отказаться от чекбоксов в пользу радиобуттонов, но структура case мне пока не даётся... |
Последний раз редактировалось DenchikK, 01-06-2007 в 05:09. Отправлено: 04:31, 01-06-2007 | #454 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось amel27, 03-06-2007 в 04:18. Причина: заменил WinWaitActive на WinWait Отправлено: 04:58, 01-06-2007 | #455 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать DenchikK
Цитата:
Если можешь, поясни пошагово (не программно, а как бы со стороны юзера) - Что должно произойти, какие чекбоксы будут созданы (их структура и цель назначения), что должно происходить при зажатом чекбоксе (после нажатия кнопки Start) и т.д. А я попробую построить соответственно гуи и описать процесс... должно быть не сложно, но цель немного смутновата - когда есть чётко поставленная цель, остальное это время, и усидчивость! (+ немного знании ![]() |
|
------- Отправлено: 05:30, 01-06-2007 | #456 |
Старожил Сообщения: 254
|
Профиль | Отправить PM | Цитировать В одной папке находятся скрипт .au3 и .exe исходного приложения. При запуске скрипта всё устанавливается правильно, до самого конца.
Через контекстное меню компилирую. При этом скомпилированный .exe "съедает" исходный .exe и имеет иконку такую же, как и скрипт. При запуске скомпилированного .exe ничего не происходит. AutoIt версия 3.2.4.9. Что делаю не так? |
Отправлено: 10:34, 01-06-2007 | #457 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать ChVL
Цитата:
|
|
Отправлено: 10:43, 01-06-2007 | #458 |
Старожил Сообщения: 254
|
Профиль | Отправить PM | Цитировать amel27
Цитата:
Странно, что нигде ни в одном мануале о необходимости переименования скрипта нет ни слова. Это же не очевидно. Ну, съедает... А может так и надо? |
|
Отправлено: 11:04, 01-06-2007 | #459 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать уважаемый amel27
к сожалению в данном случае не всё так просто. видимо вы не проверяли. я добавил сразу после запуска Visicom MsgBox(4096, "otladka", $pid) и оказалось что Visicom.exe имеет Pid=0 т.е. не отлавливает т.к. Visicom запускается как дочерний процесс NTVDM.exe, последний продолжает оставаться в памяти при закрытии Visiciom то PID NTVDM'а как условие не годится. В случае например с Notepad.exe или ещё с каким-нибуть другим приложением, которое висит в памяти как самостоятельный процесс проблем нет. Естессно ваш код более правильный т.к. позволяет отловить именно тот процесс который запустил скрипт (если есть другой процесс с таким же именем), но в данном случае не в этом проблема. |
Отправлено: 12:36, 01-06-2007 | #460 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
[Архив - Часть 1.2] AutoIt скрипты | Dirk Diggler | AutoIt | 505 | 02-12-2006 11:00 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|