-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Можно ли получить список окон, открытых процессом?
Добрый день! Допустим, есть процесс NotePad.exe. Как получить массив из одного элемента, который будет являться хэндлом окна блокнота?
|
Цитата:
Цитата evg64
Как получить массив из одного элемента, который будет являться хэндлом окна блокнота? »
|
А зачем нужен массив?
Вот пример получения хендла окна «Сохранить как» у блокнота:
Код:
$iPID = Run(@WindowsDir & "\Notepad.exe")
ProcessWait("Notepad.exe")
Sleep(500)
Send("^s")
Sleep(1000)
$hSaveAs = _WinGetHandleEx($iPID, "#32770", "", "FolderView")
MsgBox(64, "Result", "hWnd: " & $hSaveAs & ", Title: " & WinGetTitle($hSaveAs))
Func _WinGetHandleEx($iPID, $sClassNN="", $sPartTitle="", $sText="", $iVisibleOnly=1)
If IsString($iPID) Then $iPID = ProcessExists($iPID)
Local $aWList = WinList("[CLASS:" & $sClassNN & ";REGEXPTITLE:(?i).*" & $sPartTitle & ".*]", $sText)
If @error Then Return SetError(1, 0, "")
For $i = 1 To $aWList[0][0]
If WinGetProcess($aWList[$i][1]) = $iPID Then
If Not $iVisibleOnly Or ($iVisibleOnly And BitAND(WinGetState($aWList[$i][1]), 2)) Then Return $aWList[$i][1]
EndIf
Next
Return SetError(2, 0, "")
EndFunc
|
Так можно получить список всех окон для процесса.
Код:
#Include <Array.au3>
#Include <WinAPIEx.au3>
Global $Data = _WinAPI_EnumProcessWindows(ProcessExists('Notepad.exe'))
If IsArray($Data) Then
_ArrayDisplay($Data)
EndIf
WinAPIEx.au3
|
Некоторые процессы, например IExplore.exe зачастую запускают по несколько окон, поэтому нужен массив.
Цитата:
Цитата Yashied
Так можно получить список всех окон для процесса. »
|
Спасибо! Ровно то, что надо! :)
|
Цитата:
Цитата evg64
Некоторые процессы, например IExplore.exe зачастую запускают по несколько окон, поэтому нужен массив. »
|
Я это спросил в качестве коментария на цитату:
Цитата:
Цитата evg64
Как получить массив из одного элемента, который будет являться хэндлом окна блокнота? »
|
Т.ч совет на будущее - желательно чтобы содержимое темы совпадало с её заголовком ;)
P.S
Тема решена?
|
Время: 07:23.
© OSzone.net 2001-