程序自身的窗口标题是动态的,如何获得自身状态
程序自身的窗口标题是动态的,如何获得自身是最小化、最大化状态,请高人指点,谢谢! WinGetState(hwnd)无论标题怎样变化,句柄总是不变的 二楼果然是强人,这个问题我一直在想呢 WinGetHandle 获得窗口句柄也是要窗口标题啊。。
怎么办啊 回复 2# ceoguang
给个例子,谢谢! 获得窗口句柄有很多方法 搜索下论坛呗 回复 6# sxd
方法是有很多,没搜索到像我这种情况的。 回复 4# 83265358
While 1
$handle = WinGetHandle("")
If $handle<>"" Then ExitLoop
Sleep(10)
WEnd
Exit( MsgBox(0,0,$handle) )
本帖最后由 ceoguang 于 2011-1-1 13:10 编辑
WinGetHandle 获得窗口句柄也是要窗口标题啊。。
怎么办啊
83265358 发表于 2010-12-31 21:28 http://www.autoitx.com/images/common/back.gif
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
If $aWindows[$i] <> "" And _WinAPI_IsWindowVisible($aWindows[$i]) Then
_WinAPI_GetWindowThreadProcessId($aWindows[$i], $iPid);取窗口的PID
If $iPid = $ProcessId Then
Return $aWindows[$i];返回目标窗口的句柄
EndIf
EndIf
Next
Return SetError(0,0,"")
;成功,返回窗口句柄,失败返回空
EndFunc ;==>_GetProcessHwnd
页:
[1]