找回密码
 加入
搜索
查看: 2367|回复: 6

[AU3基础] 【已解决】有关窗口句柄的问题

  [复制链接]
发表于 2011-8-4 12:25:35 | 显示全部楼层 |阅读模式
本帖最后由 timnov1 于 2011-8-4 17:44 编辑

下面是AU3帮助文档中IsHWnd()函数例子

Run("notepad.exe")
Local $hWnd = WinGetHandle("[CLASS:Notepad]")
If IsHWnd($hWnd) Then
    MsgBox(4096, "", "It's a valid HWND")
Else
    MsgBox(4096, "", "It's not an HWND")
EndIf

运行结果:




有点不明白了,为什么WinGetHandle("[CLASS:Notepad]")获取的不是有效的窗口句柄呢?请老鸟用较通俗的语言告之,不胜感激~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-8-4 12:53:16 | 显示全部楼层
返 回 值

成功: 返回目标窗口句柄.
失败: 返回空字符串"", @error 设置为 1, 不存在符合要求的窗口.
发表于 2011-8-4 13:13:07 | 显示全部楼层
学习学习!!!!!!!!!!
发表于 2011-8-4 13:38:17 | 显示全部楼层
本帖最后由 daiyu116 于 2011-8-4 13:45 编辑

回复 1# timnov1
是因为帮助的例子写的有点bug,应该是这样的:

Run("notepad.exe")
WinWaitActive("[CLASS:Notepad]")
Local $hWnd = WinGetHandle("[CLASS:Notepad]")
If IsHWnd($hWnd) Then
        MsgBox(4096, "", "It's a valid HWND有效的窗口句柄")
Else
        MsgBox(4096, "", "It's not an HWND无效的窗口句柄")
EndIf


也就是说,获取窗口句柄之前,都要激活该窗口或者将窗口置顶

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-8-4 13:52:48 | 显示全部楼层
回复 4# daiyu116

不是吧,应该是确认notepad 执行完成后再获取 Handle
WinWait("[CLASS:Notepad]")      ;直至指定窗口存在
发表于 2011-8-4 14:00:45 | 显示全部楼层
回复 5# wa18239

你说的 应该是正确的。
我用下面的代码测试了一下,在sleep的时候,点击其他窗口,这样就将notepad.exe弄成了非激活窗口和非置顶窗口。果然还是返回"It's a valid HWND有效的窗口句柄",看来我之前理解有误,谢谢告知~

Run("notepad.exe")
WinWait("[CLASS:Notepad]")
Sleep(5000)
Local $hWnd = WinGetHandle("[CLASS:Notepad]")
If IsHWnd($hWnd) Then
        MsgBox(4096, "", "It's a valid HWND有效的窗口句柄")
Else
        MsgBox(4096, "", "It's not an HWND无效的窗口句柄")
EndIf
 楼主| 发表于 2011-8-4 17:43:48 | 显示全部楼层
感谢daiyu116 和wa18239 ,感谢所有关注这个帖子的朋友,谢谢你们了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-18 23:45 , Processed in 0.077498 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表