- Сообщения
- 596
- Репутация
- 157
AutoIt: 3.3.0.0
Версия: 1
Категория: Окна и диалоги
Описание: Пример получения указателя окна, и дальнейшего упралвения им, по его PID
Код/Пример:
Файл: ZIP (AU3, EXE) 270 kb
Источник: `p r o x y
Версия: 1
Категория: Окна и диалоги
Описание: Пример получения указателя окна, и дальнейшего упралвения им, по его PID
Код/Пример:
Код:
Local $iPid1, $iPid2, $iHwd1, $iHwd2
; запуск блокнота №1, PID окна записывается в переменную $iPid1
$iPid1 = Run('notepad.exe')
; получение указателя на окно блокнота №1 по PID окна $iPid1
While 1
$iHwd1 = _ProcessGetWindow($iPid1)
If IsHWnd($iHwd1) Then ExitLoop
WEnd
; ожидание появления окна блокнота №1
WinWait($iHwd1)
; запуск блокнота №1, PID окна записывается в переменную $iPid1
$iPid2 = Run('notepad.exe')
; получение указателя на окно блокнота №1 по PID окна $iPid1
While 1
$iHwd2 = _ProcessGetWindow($iPid2)
If IsHWnd($iHwd2) Then ExitLoop
WEnd
; ожидание появления окна блокнота №1
WinWait($iHwd2)
; ---------------------------------
; теперь известны указатели обоих окон, далее можно легко работать непосредственны с каждым из них не перепутав
; перемещение окно блокнота №1
WinMove($iHwd1, '', 200, 200, 400, 400)
; перемещение окно блокнота №2
WinMove($iHwd2, '', 280, 280, 400, 400)
; активизация окна блокнота №1
WinActivate($iHwd1)
; вставка текста в окно блокнота №1
ControlSetText($iHwd1, '', 'Edit1', 'Окно №1')
Sleep(2000)
; активизация окна блокнота №2
WinActivate($iHwd2)
; вставка текста в окно блокнота №2
ControlSetText($iHwd2, '', 'Edit1', 'Окно №2')
Sleep(2000)
; ---------------------------------
;закрытие окна блокнота №1
WinClose($iHwd1)
;закрытие окна блокнота №1
WinClose($iHwd2)
; ---------------------------------
; функция получения загодовка и указателя окна по его PID
Func _ProcessGetWindow($iPID, $iRet=1)
Local $aWinList = WinList()
Local $aRet[2]
If IsString($iPID) Then $iPID = ProcessExists($iPID)
For $i = 1 To UBound($aWinList)-1
If WinGetProcess($aWinList[$i][1]) = $iPID Then
$aRet[0] = $aWinList[$i][0] ;Title
$aRet[1] = $aWinList[$i][1] ;WinHandle
If $iRet = 0 Then Return $aRet[0]
If $iRet = 1 Then Return $aRet[1]
Return $aRet
EndIf
Next
Return SetError(1, 0, $aRet)
EndFunc
Источник: `p r o x y