练习窗口函数遇到的问题[已解决]
本帖最后由 cashiba 于 2016-4-15 19:49 编辑#include <AutoItConstants.au3>
#include <Array.au3>
#include <WinAPISys.au3>
#include <WinAPI.au3>
Opt("WinTitleMatchMode", 1)
run("notepad.exe")
Local $hwnd1=WinActivate("无标题 - 记事本");这句为啥取不到句柄?
ConsoleWrite("$hwnd1=" & $hwnd1 & @CRLF)
Local $hwnd2 = WinWait("", "", 10)
ConsoleWrite("$hwnd2=" & $hwnd2 & @CRLF)
WinActivate($hwnd2)
Sleep(1500)
Local $hwnd3= WinActive("")
ConsoleWrite("$hwnd3=" & $hwnd3 & @CRLF)
If $hwnd3 Then $aData = _WinAPI_EnumChildWindows($hwnd3)
_ArrayDisplay($aData, 'Note_ChildWindows')
Sleep(1500)
Local $hwnd4=WinActivate("Note_ChildWindows");这句为啥取不到句柄?
ConsoleWrite("Note_ChildWindows的句柄=" & $hwnd4 & @CRLF)
Local $hwnd5=WinActivate("class:AutoIt v3 GUI]");这句为啥取不到句柄?
ConsoleWrite("Note_ChildWindows的句柄=" & $hwnd5 & @CRLF)
Sleep(1500)
WinClose($hwnd4)
Sleep(1500)
WinClose($hwnd2)小白,今天木事,练习一下几个窗口函数,发现不尽人意,发上来请大侠们提点提点,看看是哪里没有理解透彻,先行感谢了...... 回复 1# cashiba
获取句柄请用WinGetHandle 获取指定窗口的内部句柄.
WinActivate 激活指定的窗口(设置焦点到该窗口,使其成为活动窗口).
函数不要乱用 回复cashiba
获取句柄请用WinGetHandle 获取指定窗口的内部句柄.
WinActivate 激活指 ...
guland 发表于 2016-4-9 22:50 http://www.autoitx.com/images/common/back.gif
看帮助文件中:
激活指定窗口.
WinActivate("标题"[, "文本"])
返 回 值
成功: 返回目标窗口句柄.
失败: 返回 0, 窗口没有找到或不能被激活.
所以才有此一写法,试试看结果如何的,不知为何返回值取不到.... run("notepad.exe")
Local $hwnd1=WinActivate("无标题 - 记事本");这句为啥取不到句柄?
程序刚运行,窗口还没来得及出现,你激活窗口失败,当然取不到了,看看WinActivate的帮助文件
失败: 返回 0, 窗口没有找到或不能被激活.
可以在run("notepad.exe")的后面加个sleep(100)试试
_ArrayDisplay($aData, 'Note_ChildWindows')
Sleep(1500)
Local $hwnd4=WinActivate("Note_ChildWindows");这句为啥取不到句柄?
_ArrayDisplay函数会导致脚本进入一个循环,直到列表视图窗口关闭才会继续执行后面的代码,
所以执行Local $hwnd4=WinActivate("Note_ChildWindows")的时候窗口已经不存在了
Local $hwnd5=WinActivate("class:AutoIt v3 GUI]");这句为啥取不到句柄?
同上~ 程序刚运行,窗口还没来得及出现,你激活窗口失败,当然取不到了,看看WinActivate的帮助文件
失败: 返 ...
zldfsz 发表于 2016-4-10 08:50 http://www.autoitx.com/images/common/back.gif谢谢zldfsz大师指点!
1、WinActivate函数取不到句柄,确实与程序窗口未及出现有关系,加了延时后就取到值了
2、_ArrayDisplay函数列表窗口如你所说,类似于msgbox函数等待响应后才进入下一步,所以后面的步骤都无法进行。那么,如果想让该_ArrayDisplay函数列表窗口自动关闭,不需要手工干预的话,怎么实现呢?记得msgbox函数有一个延时自动关闭的参数。是不是要通过另开一线程的法子?
页:
[1]