madmasles
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору THE GUILTY GOD Цитата: Я пользуюсь прогой ScriptWriter всё записывает отлично но вот только, она ещё записывает и координаты движения мышы , так что если окна запустили не в том положение, в котором я их записал то некоторые части текста невыделяются и некопируются, как можно сделать так чтобы не по координатам двигалась мышь, а по тем кнопкам которые я нажимаю!! | Вот Вам простой скрипт. После его запуска нужно кликнуть средней кнопкой мыши по интересующему Вас окну (активировать его). Скрипт сохранит в файл test.txt рядом с собой все данные об окне и его элементах, которые найдет. Эти данные можно будет использовать, например, в функциях Control*(). По кнопке Esc - выход. Код: #include <WinAPIEx.au3> #include <Misc.au3> Opt('MustDeclareVars', 1) Opt('TrayMenuMode', 1) Global $dll, $hHandle, $sTitle, $aData, $sFile = @ScriptDir & '\test.txt', $hFile, $sMessage HotKeySet('{Esc}', '_Exit') $dll = DllOpen("user32.dll") ToolTip('Кликните средней кнопкой мыши по окну,' & @CRLF & 'чтобы получить данные о нем.' & @CRLF & _ 'Или нажмите "Esc" для выхода.', 0, 0, 'Элементы окна', 1, 1) _WinAPI_EmptyWorkingSet() While 1 If _IsPressed('04', $dll) Then Sleep(250) $hHandle = WinGetHandle('[ACTIVE]') ExitLoop EndIf Sleep(10) WEnd If Not IsHWnd($hHandle) Then MsgBox(16, 'error', 'error') _Exit() EndIf $sTitle = WinGetTitle($hHandle) $aData = _WinAPI_EnumChildWindows($hHandle) If @error Then MsgBox(16, 'error', 'error') _Exit() EndIf ReDim $aData[$aData[0][0] + 1][4] For $i = 1 To $aData[0][0] $aData[$i][2] = _WinAPI_GetDlgCtrlID($aData[$i][0]) If $aData[$i][2] Then $aData[$i][3] = ControlGetText($hHandle, '', $aData[$i][2]) EndIf Next $hFile = FileOpen($sFile, 2) If $hFile <> -1 Then FileWrite($hFile, 'Заголовок окна: ' & $sTitle & @CRLF & @CRLF & _ 'Управляющие элементы окна (Controls): ' & @CRLF & @CRLF) For $i = 1 To $aData[0][0] $sMessage = $i & '.' & @CRLF & 'Class: ' & $aData[$i][1] & @CRLF & 'ID: ' & $aData[$i][2] & _ @CRLF & 'Text: ' & $aData[$i][3] & @CRLF & @CRLF FileWrite($hFile, $sMessage) Next FileClose($hFile) ToolTip('', '') TrayTip('Элементы окна', 'Найдено ' & $aData[0][0] & ' элементов.' & @CRLF & _ 'Данные сохранены в файл:' & @CRLF & '"' & $sFile & '"', 5, 1) Sleep(5000) _Exit() Else MsgBox(16, 'error', 'error') _Exit() EndIf Func _Exit() DllClose($dll) Exit EndFunc ;==>_Exit | Библиотеку WinAPIEx.au3 можно скачать здесь и положить ее или в ...\AutoIt3\Include, или в папку со скриптом. | Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 17:05 31-12-2010 | Исправлено: madmasles, 19:24 31-12-2010 |
|