|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Скопировать заголовок окна |
|
[решено] Скопировать заголовок окна
|
Старожил Сообщения: 267 |
|
|
Отправлено: 01:18, 15-06-2010 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Цитата shadowbat:
Или же нужно не заголовки, а именно названия файлов обрабатывать, а файлы лежать в одной директории? |
|
------- Отправлено: 12:18, 15-06-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать |
Отправлено: 12:52, 15-06-2010 | #3 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Цитата shadowbat:
эти программы, после запуска,имеют всего лиш один тот же заголовок, неважно это первое окно или окна меняются, но заголовок один и тот же? И все что требуется, это такой алгоритм: 1. Запускаем наш созданный обработчик, и он берет названия всех файлов в указанной директории в массив. 2. Дальше по очереди запускает каждую програмку из списка массива, ждет появления окна, берет в этого окна заголовок, закрывает эту програмку и пишет строчку в файл с порядковым номером програмки - заголовком 1 окна при ее запуске - и название програмки? |
|
------- Отправлено: 13:46, 15-06-2010 | #4 |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать Цитата beve:
вот для примера 2 разных exe-файла. (30 мб) http://multi-up.com/289485, http://multi-up.com/289486) естественно заголовки (названия окон) разные. короче - вот список http://multi-up.com/289980 он в формате PDF. делался с этих же файлов, но делался косячно. нужно сделать типа такого же заново. Цитата beve:
нужно так. Цитата beve:
и так 1800 раз, т.е. 1800 разных строчек с разными именами файлов и соотносящимися к ним заголовками |
||||
Отправлено: 14:57, 15-06-2010 | #5 |
![]() Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать тогда алгоритм такой.
1. делается список (массив) из содержимого целевой папки (1800 exe'шников) 2.1 запускается первая программа из списка, ловится окно, считывается заголовок в новый массив 2.2 запускается вторая, считывается заголовок в новый массив ... 2.1800 запускается 1800-ая, считывается заголовок в новый массив 3. из элементов массива с заголовками парсится нужная строка вида только есть одно но - это займет неимоверно кучу времени. а если это установщики собранные для msiexec.exe, которые не дает запускать несколько копий одновременно, то еще больше. |
------- Отправлено: 16:33, 15-06-2010 | #6 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Вот, очень по-простому:
$SearchDir=@ScriptDir ;папка с файлами *.exe $txtFile=@ScriptDir&"\file.txt" ;название текстового файла для записи результата $hSearch = FileFindFirstFile($SearchDir&"\*.exe") ; Инициализация поиска If $hSearch= -1 Then MsgBox(0, "Error", "No files/directories matched the search pattern") Exit EndIf ;открытие текстового файла для записывания результата в конец файла $h_txtFile = FileOpen($txtFile, 1) If $h_txtFile = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf ;цикл - пока существуют файлы в директории While 1 $file = FileFindNextFile($hSearch) ;ищем следующий файл If @error Then ExitLoop $PID=run($file, $SearchDir,@SW_MINIMIZE ) ;запускаем в свернутом режиме ProcessWait($PID) Sleep(250) ;ожидание окна, чтобы лишний раз не гонять цикл, который ниже ;цикл для ожидания окна программы, будет работать пока не появится окно программы. do $sTitle=_WinGetTitleByPID($PID) Sleep(50) Until $sTitle<>"" Or ProcessExists($PID)==0 FileWriteLine($h_txtFile, StringTrimRight($file, 4)& " "& StringRegExpReplace($sTitle,"Установка программы '(.*?)'","\1") & @CRLF) ; запись в файл очередной строки, где будет имя файла без расширения, пробел, нужный заголовок. ProcessClose($PID) ProcessWaitClose($PID) $PID="" $sTitle="" WEnd ; Close the search handle FileClose($hSearch) ;Close the txt file FileClose($h_txtFile) ;функция от http://creator-lab.ucoz.ru/load/3-1-0-19 Func _WinGetTitleByPID($iPID, $nArray = 1) If IsString($iPID) Then $iPID = ProcessExists($iPID) Local $aWList = WinList(), $sHold For $iCC = 1 To $aWList[0][0] If WinGetProcess($aWList[$iCC][1]) = $iPID And _ BitAND(WinGetState($aWList[$iCC][1]), 2) Then If $nArray Then Return $aWList[$iCC][0] $sHold &= $aWList[$iCC][0] & Chr(1) EndIf Next If $sHold Then Return StringSplit(StringTrimRight($sHold, 1), Chr(1)) Return SetError(1, 0, 0) EndFunc |
------- Последний раз редактировалось beve, 15-06-2010 в 18:16. Причина: опечатка Отправлено: 16:40, 15-06-2010 | #7 |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать beve, СУПЕР! работает как надо! пойду запущу на все файлы
![]() beve, а насколько эта задача сложная? сколько времени у Вас заняло написание такого скрипта? хочется поближе познакомиться с автоит. он прост в изучении? или это такой же язык програмирования как c++ pascal delphi ? т.е. html я изучать не мог. а вот через WYSIWYG странички делать получается легко. то же самое и с автоит хочется узнать. можно ли писать простые скриптики одним махом руки? |
Последний раз редактировалось shadowbat, 15-06-2010 в 19:53. Отправлено: 19:43, 15-06-2010 | #8 |
Ветеран Сообщения: 727
|
Профиль | Отправить PM | Цитировать Цитата shadowbat:
нужно научиться понимать логику (переменные, циклы и пр.) и не бояться самостоятельно читать справку (там, кстати, есть все для старта). Удачи. |
|
------- Отправлено: 21:44, 15-06-2010 | #9 |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать Цитата zonderz:
|
|
Отправлено: 22:43, 15-06-2010 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как скопировать текст из окна в буфер обмена | Str_ani_ck | AutoIt | 10 | 12-08-2009 11:03 | |
[решено] Немогу в опере поменять заголовок окна ! | FlatX007 | AutoIt | 5 | 07-05-2009 17:15 | |
Интерфейс - Заголовок проводника | Malfatto | Microsoft Windows Vista | 2 | 22-09-2008 21:46 | |
запрос: программа, по шаблону окна (заголовок, тип) посылащая ему нажатия клавиш | ShaddyR | Программное обеспечение Windows | 9 | 06-06-2008 18:40 | |
[решено] Как скопировать текст из окна DOC. | Ser6720 | Хочу все знать | 4 | 16-01-2008 08:31 |
|