【已解决】有关窗口句柄的问题
本帖最后由 timnov1 于 2011-8-4 17:44 编辑下面是AU3帮助文档中IsHWnd()函数例子
Run("notepad.exe")
Local $hWnd = WinGetHandle("")
If IsHWnd($hWnd) Then
MsgBox(4096, "", "It's a valid HWND")
Else
MsgBox(4096, "", "It's not an HWND")
EndIf
运行结果:
有点不明白了,为什么WinGetHandle("")获取的不是有效的窗口句柄呢?请老鸟用较通俗的语言告之,不胜感激~ 返 回 值
成功: 返回目标窗口句柄.
失败: 返回空字符串"", @error 设置为 1, 不存在符合要求的窗口. 学习学习!!!!!!!!!! 本帖最后由 daiyu116 于 2011-8-4 13:45 编辑
回复 1# timnov1
是因为帮助的例子写的有点bug,应该是这样的:
Run("notepad.exe")
WinWaitActive("")
Local $hWnd = WinGetHandle("")
If IsHWnd($hWnd) Then
MsgBox(4096, "", "It's a valid HWND有效的窗口句柄")
Else
MsgBox(4096, "", "It's not an HWND无效的窗口句柄")
EndIf
也就是说,获取窗口句柄之前,都要激活该窗口或者将窗口置顶 回复 4# daiyu116
不是吧,应该是确认notepad 执行完成后再获取 Handle
WinWait("") ;直至指定窗口存在
回复 5# wa18239
你说的 应该是正确的。
我用下面的代码测试了一下,在sleep的时候,点击其他窗口,这样就将notepad.exe弄成了非激活窗口和非置顶窗口。果然还是返回"It's a valid HWND有效的窗口句柄",看来我之前理解有误,谢谢告知~
Run("notepad.exe")
WinWait("")
Sleep(5000)
Local $hWnd = WinGetHandle("")
If IsHWnd($hWnd) Then
MsgBox(4096, "", "It's a valid HWND有效的窗口句柄")
Else
MsgBox(4096, "", "It's not an HWND无效的窗口句柄")
EndIf
感谢daiyu116 和wa18239 ,感谢所有关注这个帖子的朋友,谢谢你们了。
页:
[1]