本帖最后由 ceoguang 于 2011-1-1 13:10 编辑
WinGetHandle 获得窗口句柄也是要窗口标题啊。。
怎么办啊
83265358 发表于 2010-12-31 21:28
Win*及control*系统函数没说一定要用窗口标题,直接用句柄也是可以的,而且更高效及准确.
#include <WinAPI.au3>
$PID = ProcessExists("chrome.exe")
$hwnd = _GetProcessWindowHwnd($PID ) ;取谷歌浏览器的主窗口
MsgBox(64, "进程ID: " & $PID , "进程的主窗口句柄为: " & $hwnd & @LF & "窗口标题为: " & WinGetTitle($hwnd))
Func _GetProcessWindowHwnd($ProcessId)
Local $aWindows, $i, $iPid
$aWindows = WinList();取所有顶层窗口
For $i = 1 To $aWindows[0][0]
If $aWindows[$i][0] <> "" And _WinAPI_IsWindowVisible($aWindows[$i][1]) Then
_WinAPI_GetWindowThreadProcessId($aWindows[$i][1], $iPid);取窗口的PID
If $iPid = $ProcessId Then
Return $aWindows[$i][1];返回目标窗口的句柄
EndIf
EndIf
Next
Return SetError(0,0,"")
;成功,返回窗口句柄,失败返回空
EndFunc ;==>_GetProcessHwnd
|