sproxy
Full Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Цитата: и вот каждый элемент списка имеет все одинаковые параметры и ID | хм...вобще вобще одни и те же? как же так? а в любом случае должны быть разные.... Цитата: Я подумал просто указать координаты и кликнуть | можно посчитать координаты относительно левого верхнего угла окна программы, если при развертывании окна программы, его элемнеты не смешаются как нить. тогда можно всегда поподать по нужным координатам. Добавлено: buduc для начала попробуй так: Код: #region: - Option AutoItSetOption ('MustDeclareVars', 1) AutoItSetOption ('TrayIconDebug', 1) AutoItSetOption ('TrayIconHide', 0) #endregion Global $path_file_1, $path_file_2, $path_file_3, $file_1_all, $file_2, $file_2_one_string, $new_string='', $timer[3], $nomber_string, $rnd, $rnd_nomber $timer[1] = 0 $timer[2] = 0 $nomber_string = 1 $rnd_nomber = 1 $path_file_1 = 'c:\file_11.txt' $path_file_2 = 'c:\file_22.txt' $path_file_3 = 'c:\file_33.txt' ToolTip('Чтение файла 1 в переменную: Выполняется...', 10, 100, 'Сравние файлов и поиск неизвестных строчек') $timer[0] = TimerInit() $file_1_all = FileRead($path_file_1) $timer[1] = TimerDiff($timer[0]) $file_1_all = @CRLF & $file_1_all & @CRLF ToolTip('Чтение файла 1 в переменную: ОК' & @CRLF & _ 'Чтение файла 2 построчно, строка №: ...', 10, 100, 'Сравние файлов и поиск неизвестных строчек') $timer[0] = TimerInit() $file_2 = FileOpen($path_file_2, 0) If $file_2 == -1 Then Exit EndIf While 1 $file_2_one_string = FileReadLine($file_2) If @error == -1 Then ExitLoop $rnd &= '.' If $rnd_nomber == 6 Then $rnd = '.' ToolTip('Чтение файла 1 в переменную: ОК' & @CRLF & _ 'Чтение файла 2 построчно, строка №: ' & $nomber_string & ' ' & $rnd, 10, 100, 'Сравние файлов и поиск неизвестных строчек') $file_2_one_string = StringStripWS($file_2_one_string, 1+2) If StringRegExp($file_1_all, '\r\n\ *(' & $file_2_one_string &')\ *\r\n', 0) == 0 Then $new_string &= $file_2_one_string & @CRLF $nomber_string += 1 $rnd_nomber += 1 Wend FileClose($file_2) $timer[2] = TimerDiff($timer[0]) ToolTip('Чтение файла 1 в переменную: ОК' & @CRLF & _ 'Чтение файла 2 построчно: OK' & @CRLF & _ 'Удаление 2-ух символов в конце файла2: Выполняется...', 10, 100, 'Сравние файлов и поиск неизвестных строчек') $new_string = StringTrimRight($new_string, 2) ToolTip('Чтение файла 1 в переменную: ОК' & @CRLF & _ 'Чтение файла 2 построчно: OK' & @CRLF & _ 'Удаление 2-ух символов в конце файла 2: ОК', 10, 100, 'Сравние файлов и поиск неизвестных строчек') ;~ MsgBox(0, 'о_0', 'Чтение файла 1 (сек): ' & ($timer[1] / 1000) & @CRLF & 'Обработка файла 2 (сек): ' & ($timer[2] / 1000) & @CRLF & @CRLF & 'Неопознанные строчки в файле:' & @CRLF & $path_file_2 & @CRLF & @CRLF & $new_string) MsgBox(0, 'о_0', 'Чтение файла 1 (сек): ' & ($timer[1] / 1000) & @CRLF & 'Обработка файла 2 (сек): ' & ($timer[2] / 1000) & @CRLF & @CRLF & 'Неопознанные строчки в файле:' & @CRLF & $path_file_2 & @CRLF & @CRLF & 'Сравнение завершенно, запись результата в новый файл') ToolTip('Чтение файла 1 в переменную: ОК' & @CRLF & _ 'Чтение файла 2 построчно: OK' & @CRLF & _ 'Удаление 2-ух символов в конце файла 2: ОК' & @CRLF & _ 'Запись данных в файл 3: Выполняется...', 10, 100, 'Сравние файлов и поиск неизвестных строчек') FileWrite(FileOpen($path_file_3, 2), $new_string) ToolTip('Чтение файла 1 в переменную: ОК' & @CRLF & _ 'Чтение файла 2 построчно: OK' & @CRLF & _ 'Удаление 2-ух символов в конце файла2: ОК' & @CRLF & _ 'Запись данных в файл 3: ОК', 10, 100, 'Сравние файлов и поиск неизвестных строчек') MsgBox(0, 'о_0', 'Чтение файла 1 (сек): ' & ($timer[1] / 1000) & @CRLF & 'Обработка файла 2 (сек): ' & ($timer[2] / 1000) & @CRLF & @CRLF & 'Неопознанные строчки в файле:' & @CRLF & $path_file_2 & @CRLF & @CRLF & 'Все опреации завершенны') | - будет отображаться ход выполнения, посмотри, может где то происходит ступор. И если будут "траблы", можно попробовать считывать данные из файлов по символьно... Добавлено: zpmaloy т.е. для всех элементов списка AutoIt Windows Info показывает одини и те же значения "Advanced (Class)" (он же "ClassnameNN") ? Добавлено: Цитата: а если разное разрешение будет или там не развернуто во все | тут главное выяснить - изменяют ли свою позицию нужные элементы, относительно самого окна, а точнее его левого верхнего угла, при разных разрешениях монитора и в разных состояних программы (развернуто во все, растянуто на max возможное, наоборот - втянутое на min возможный размер, ит.д.) и если нужные элементы всегда находятся на одном и том же расстоянии от верхнего левого угла окна программы - то действовать можно так: вычеслить положение окна программы на мониторе, взять координаты левого верхнего угла программы и прибавить им необходимое расстояние до требуемоего элемента.... Добавлено: zpmaloy пример: Код: #region: - Option AutoItSetOption ('MustDeclareVars', 1) AutoItSetOption ('TrayIconDebug', 1) AutoItSetOption ('TrayIconHide', 0) #endregion Local $win_pos Run('calc.exe') WinWaitActive('Калькулятор', 'MC') MsgBox(0, 'Cooooooord-Click', 'А теперь курсор будет перемещен на 60 пиксилей вправо и 30 пикселей вниз от левого верхнего угла окна калькулятора,' & @CRLF & _ 'и будет выбран инжинерный вид калькулятора') $win_pos = WinGetPos('Калькулятор', 'MC') MouseMove($win_pos[0]+60, $win_pos[1]+30, 0) Sleep(500) MouseClick('left') Sleep(500) MouseMove($win_pos[0]+60, $win_pos[1]+70, 0) Sleep(500) MouseClick('left') MsgBox(0, 'Cooooooord-Click', 'А теперь окно калькулятора будет перемещенно, а потом будет выбран обычный вид калькулятора') WinMove('Калькулятор', 'MC', $win_pos[0]+100, $win_pos[1]+100) $win_pos = WinGetPos('Калькулятор', 'MC') MouseMove($win_pos[0]+60, $win_pos[1]+30, 0) Sleep(500) MouseClick('left') Sleep(500) MouseMove($win_pos[0]+60, $win_pos[1]+50, 0) Sleep(500) MouseClick('left') MsgBox(0, 'Cooooooord-Click', 'Для наглядности используется: MouseMove+Sleep+MouseClick, но их можно заменить одним MouseClick') |
|