|
Компьютерный форум 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 |
Старожил Сообщения: 288
|
Профиль | Отправить PM | Цитировать Creat0R
Суть работы скрипта такова: Заливка файлов по списку ссылок в аккаунты, доступ к которым задается логином и паролем. То есть со стороны юзеа это выглядит так: он подготоавливает список ссылок на файлы, которые хочет скачать, и список пустых аккаунтов, в которые эти ссылки будут помещены. 1 линк = 1 аккаунт. При запуске скрипта юзер выбирает, в какой именно аккаунт будет заливаться любой по списку файл по линку (radibutton подходит лучше, но я что то до сих пор с опреатором case из примера не разобрался): http://img154.imageshack.us/img154/3923/1autowa8.jpg И вот когда выбран нужный аккаунт, поле самой программы заполняется: http://img154.imageshack.us/img154/8333/2autoyc1.jpg В поле линк - идет ссылка, тут наверное даже не принципиально её положение в файле, пускай будет самая первая в списке (ещё б сделать в этом случае её удаление из списка, после заполнения поля) В поле Логин - тот Логин, что выбран, в поле Пароль - соответствующий ему пароль . Например 6 логин сверху соответствует 6 сверху паролю (то же былоб интереснее, чтоб после заполнения они бы стирались). Вообщем как то так... Спасибо Вам что Вы со мною возитесь! :-) |
Последний раз редактировалось DenchikK, 01-06-2007 в 18:34. Отправлено: 13:09, 01-06-2007 | #461 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Ветеран Сообщения: 907
|
Профиль | Отправить PM | Цитировать Проблема, при отработке скрипта. Ставлю прогу , кто может объясните почему нажатие кнопок не срабатывает. В предыдущем посте мне объяснили в чем проблема. Но не помогает.
|
Отправлено: 14:55, 01-06-2007 | #462 |
Старожил Сообщения: 254
|
Профиль | Отправить PM | Цитировать Сразу недосмотрел. Скомпилированный exe работает, но только тогда, когда рядом присутствует исходный exe, т.е. ничем не отличается от работы со скриптом au3. Самостоятельно НЕ запускается - сразу же требует исходный exe. Декомпилировал его с помощью Exe2Aut и увидел, что в него один к одному переписан скрипт и больше ничего нет, хотя объём около 200 KB.
Интересный момент: видимое содержимое декомпилированного exe с одинаковыми именами (который вообще не запускается) абсолютно аналогично описанному выше (это просто текст скрипта), и объёмы у них одинаковы. Где ещё копать? |
Отправлено: 15:28, 01-06-2007 | #463 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать voler
Цитата:
Я бы заменил WinWaitActive на WinWait(), поскольку ControlClick() умеет работать даже с неактивными окнами, и вполне достаточно просто дождаться появления окна. |
|
Отправлено: 19:29, 01-06-2007 | #464 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать DenchikK
Попробую переформулировать (для проверки, правильно ли я понял): Запускаем скрипт, создаются столько чекбоксов, сколько есть записей в файле линков (и только для этих записей создаём чекбоксы)... а точнее (как я понял), создаём radio button ![]() Далее после нажатия на Старт, в каждое поле вписывается соответственно - Ссылка, логин, и пароль. Вот только есть одна проблема - какое должно быть название у чекбоксов? можно совместить что то вроде этого: Login_pass_link (как у тебя на скрине)... и потом разделять это на три значения, для того чтобы выявить нужные данные для записи в прогу. Такой вопрос: А списки обязательно держать в трёх разных файлах? может можно записывать в один ini файл (к примеру AvaRemote.ini), чтобы имя секции ровнялось ссылке, а под секцией записи пароля и логина, что то типа такого: Так будет намного эргономичнее и удобнее обрабатывать данные. Работать с Radio button совсем не сложно, почти также как и с обычными чекбоксами, разница только в том что может быть выбран один пункт в определённой группе (при наличии таковой). Вот пример: GUICreate("test") $Radio1 = GUICtrlCreateRadio("Radio1", 10, 40) $Radio2 = GUICtrlCreateRadio("Radio2", 10, 70) $Radio3 = GUICtrlCreateRadio("Radio3", 10, 100) $ShowSelectedButton = GUICtrlCreateButton("Show checked button", 150, 200) GUISetState() While 1 Switch GUIGetMsg() Case -3 Exit Case $ShowSelectedButton Select Case GUICtrlRead($Radio1) = 1 MsgBox(0, "", "This radio button checked: " & GUICtrlRead($Radio1, 1)) Case GUICtrlRead($Radio2) = 1 MsgBox(0, "", "This radio button checked: " & GUICtrlRead($Radio2, 1)) Case GUICtrlRead($Radio3) = 1 MsgBox(0, "", "This radio button checked: " & GUICtrlRead($Radio3, 1)) EndSelect EndSwitch WEnd ChVL Цитата:
![]() |
|
------- Отправлено: 03:19, 02-06-2007 | #465 |
Старожил Сообщения: 288
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
Цитата:
Цитата:
Цитата:
Добавлено ещё раз :-) C radiobutton кое как разобрался. С ini файлом вроде то же (спасибо огромное за подсказку его использовать! так стало гораздо удобнее ). Вот немного уменьшил скрипт, как смог: #include <GUIConstants.au3> #include <File.au3> If WinExists(@ScriptName) Then Exit AutoItWinSetTitle(@ScriptName) AutoItSetOption("TrayIconDebug", 1) AutoItSetOption("SendKeyDelay", 60) AutoItSetOption("MouseCoordMode", 0) Global $i, $file, $group_1, $group_2, $group_3, $Links_Array, $Logins_Array, $Pass_Array, $Servers_Array, $Secrets_Array ; Запуск программы Run ('avaload.exe') ; Считывание Данных $Logins_Array = IniReadSection("ava.ini", "logins") $Pass_Array = IniReadSection("ava.ini", "pass") $Links_Array = IniReadSection("ava.ini", "links") $Servers_Array = IniReadSection("ava.ini", "servers") $Secrets_Array = IniReadSection("ava.ini", "secrets") ; Построение GUI GUICreate("Автозаполнение", 340, 350) ;If IsArray($Links_Array) Then ; $Top = 20 ; For $i = 1 To Logins_Array[0][0] ; GUICtrlCreateRadio($Logins_Array[$i][1], 10, $Top) ; $Top += 20 ; Next ;EndIf $Radio1 = GUICtrlCreateRadio($Logins_Array[1][1], 10, 20) $Radio2 = GUICtrlCreateRadio($Logins_Array[2][1], 10, 40) $Radio3 = GUICtrlCreateRadio($Logins_Array[3][1], 10, 60) $Radio4 = GUICtrlCreateRadio($Logins_Array[4][1], 10, 80) $Radio5 = GUICtrlCreateRadio($Logins_Array[5][1], 10, 100) $Radio6 = GUICtrlCreateRadio($Logins_Array[6][1], 10, 120) $Radio7 = GUICtrlCreateRadio($Logins_Array[7][1], 10, 140) $Radio8 = GUICtrlCreateRadio($Logins_Array[8][1], 10, 160) $Radio9 = GUICtrlCreateRadio($Logins_Array[9][1], 10, 180) $Radio10 = GUICtrlCreateRadio($Logins_Array[10][1], 10, 200) $Radio11 = GUICtrlCreateRadio($Logins_Array[11][1], 10, 220) $Radio12 = GUICtrlCreateRadio($Logins_Array[12][1], 10, 240) $Radio13 = GUICtrlCreateRadio($Logins_Array[13][1], 10, 260) $Radio14 = GUICtrlCreateRadio($Logins_Array[14][1], 10, 280) $Radio15 = GUICtrlCreateRadio($Logins_Array[15][1], 10, 300) $Radio16 = GUICtrlCreateRadio($Logins_Array[16][1], 10, 320) $Start = GUICtrlCreateButton("Заполнить", 210, 20, 120, 20) $Close = GUICtrlCreateButton("Выход", 210, 40, 120, 20) $Server1 = GUICtrlCreateButton("Сервер 1", 210, 60, 120, 20) $Server2 = GUICtrlCreateButton("Сервер 2", 210, 80, 120, 20) $group_1 = GUICtrlCreateGroup ("Выбор Аккаунта", 5, 5, 190, 340) $group_2 = GUICtrlCreateGroup ("Кнопочки", 205, 5, 130, 100) $group_3 = GUICtrlCreateGroup ("Описание", 205, 105, 130, 240) $Label1 = GUICtrlCreateLabel(" Описание Работы", 210, 120) $Label2 = GUICtrlCreateLabel("1. Впишите в ava.ini", 210, 140) $Label3 = GUICtrlCreateLabel("линки,логины,пароли,", 210, 155) $Label4 = GUICtrlCreateLabel("параметры серверов.", 210, 170) $Label5 = GUICtrlCreateLabel("2. Выберите Сервер", 210, 185) $Label6 = GUICtrlCreateLabel("3. Выберите пустой ", 210, 200) $Label7 = GUICtrlCreateLabel("аккаунт для заливки. ", 210, 215) $Label8 = GUICtrlCreateLabel(" Принцип работы: ", 210, 235) $Label9 = GUICtrlCreateLabel("Например, выбираем", 210, 250) $Label10 = GUICtrlCreateLabel("первый логин,в него", 210, 265) $Label11 = GUICtrlCreateLabel("будет заливаться ", 210, 280) $Label12 = GUICtrlCreateLabel("первый линк. и.т.д", 210, 295) $Label13 = GUICtrlCreateLabel(" Удачи! ", 210, 315) GUISetState () ; Основная Работа Скрипта GUISetState() ; display the GUI While 1 Switch GUIGetMsg() Case -3 Exit Case $Close Exit Case $Server1 WinActivate ("AvaRemoteLoad") ControlClick ( 'AvaRemoteLoad', '', "Button4") WinWaitActive ('Настройки') ControlSetText ( 'Настройки', '', 'Edit1', $Servers_Array[1][1]) ControlSetText ( 'Настройки', '', 'Edit2', $Secrets_Array[1][1]) ControlClick ( 'Настройки', '', "Button2") Case $Server2 WinActivate ("AvaRemoteLoad") ControlClick ( 'AvaRemoteLoad', '', "Button4") WinWaitActive ('Настройки') ControlSetText ( 'Настройки', '', 'Edit1', $Servers_Array[2][1]) ControlSetText ( 'Настройки', '', 'Edit2', $Secrets_Array[2][1]) ControlClick ( 'Настройки', '', "Button2") Case $Start Select Case GUICtrlRead($Radio1) = 1 $i = 1 Case GUICtrlRead($Radio2) = 1 $i = 2 Case GUICtrlRead($Radio3) = 1 $i = 3 Case GUICtrlRead($Radio4) = 1 $i = 4 Case GUICtrlRead($Radio5) = 1 $i = 5 Case GUICtrlRead($Radio6) = 1 $i = 6 Case GUICtrlRead($Radio7) = 1 $i = 7 Case GUICtrlRead($Radio8) = 1 $i = 8 Case GUICtrlRead($Radio9) = 1 $i = 9 Case GUICtrlRead($Radio10) = 1 $i = 10 Case GUICtrlRead($Radio11) = 1 $i = 11 Case GUICtrlRead($Radio12) = 1 $i = 12 Case GUICtrlRead($Radio13) = 1 $i = 13 Case GUICtrlRead($Radio14) = 1 $i = 14 Case GUICtrlRead($Radio15) = 1 $i = 15 Case GUICtrlRead($Radio16) = 1 $i = 16 EndSelect WinActivate ("AvaRemoteLoad") ControlSetText ( 'AvaRemoteLoad', '', 'Edit1', $Links_Array[$i][1]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit2', $Logins_Array[$i][1]) ControlSetText ( 'AvaRemoteLoad', '', 'Edit3', $Pass_Array[$i][1]) EndSwitch WEnd Для последующей обработки выбора radiobutton пытался впихнуть строчку но не получилось, вываливается ошибка. Как сопоставить теперь автоматическое рисование нужного количества радиобутаннов и их работу - ума не приложу... |
||||
Последний раз редактировалось DenchikK, 04-06-2007 в 02:20. Отправлено: 12:02, 02-06-2007 | #466 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Diamond
Цитата:
Почему-то был уверен, что поставил WinWait(), уже исправил... V0van3 Цитата:
![]() конечно не проверял, нынче найти 16-битное приложение не так просто... вот навскидку два варианта: Простой и надежный способ ценой лишнего CMD-процесса: $exe = 'Vcmurbas.exe' ; Имя 16-битного приложения $dir = 'C:\Program Files\Vcmurbas' ; Путь к каталогу программы $pid = Run(@COMSPEC & ' /C START /WAIT /SEPARATE ' & $exe, $dir, @SW_HIDE) While ProcessExists($pid) Sleep(200) WEnd $exe = 'Vcmurbas.exe' ; Имя 16-битного приложения $dir = 'C:\Program Files\Vcmurbas' ; Путь к каталогу программы $PDL = ProcessList ('ntvdm.exe') Run (@COMSPEC & ' /C START /SEPARATE ' & $exe, $dir, @SW_HIDE) $PID = _ProcessListWait($PDL, 'ntvdm.exe') While ProcessExists($pid) Sleep(200) WEnd ; Функция, которая сравнивает списки процессов до появления различий ; и возвращает PID нового процесса. Func _ProcessListWait (ByRef $arrPLOld, $strPName = '') Local $i, $arrPLNew, $strPLOld='', $newPID=0 For $i=1 To $arrPLOld[0][0] $strPLOld &= $arrPLOld[$i][1] &';' Next Do Sleep (100) If @NUMPARAMS=1 Then $arrPLNew = ProcessList() If @NUMPARAMS=2 Then $arrPLNew = ProcessList($strPName) For $i=1 To $arrPLNew[0][0] If StringInStr($strPLOld, $arrPLNew[$i][1]&';')=0 Then $newPID=$arrPLNew[$i][1] Next Until $newPID Return $newPID EndFunc |
||
Отправлено: 05:20, 03-06-2007 | #467 |
Старожил Сообщения: 254
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
|
||
Отправлено: 19:55, 03-06-2007 | #468 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать amel27
Цитата:
![]() Это и не ошибка вовсе, а всего лишь другой способ. ![]() |
|
Отправлено: 22:15, 03-06-2007 | #469 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Diamond
Цитата:
- WinWait()+ControlClick()/ControlCommand() - WinWait()+WinActivate()+Send(). |
|
Отправлено: 02:37, 04-06-2007 | #470 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|