确定包含某个控件的窗口【已解决】
本帖最后由 ysping 于 2016-9-2 08:35 编辑请大家帮忙看看这个需求怎么处理:先检测是否存在某个控件,如何存在某个控件,再检测包含这个控件的窗口,然后将这个窗口关闭。 感觉应该检测这个控件的窗口存不存在 再关闭呢。 回复 2# heroxianf
这个怎么检测?只找到获取控件或获取窗口的函数 回复 2# heroxianf
必须是包含指定控件的窗口 回复 4# ysping
你先用窗口查询工具看看信息,然后再看看什么情况下出现这个窗口。再操作就可以了。是我的话会这么试试。 本帖最后由 ysping 于 2016-9-1 11:55 编辑
回复 5# heroxianf
查看了,但是我不知道怎么判断“包含指定控件的窗口”。 这个控件有时有,有时没有 回复 7# ysping
检查指定控件 我就不太清楚了,等高手来。 有个笨方法,把这个窗口的控件都列出来,判断有没有指定的控件。但是感觉这样太麻烦了,哪个函数可以获取指定控件的窗口? 按道理来说,这个控件所属的窗口信息是固定的,比如窗口标题、窗口所属进程等信息都是恒久不变的,应该根据唯一信息先判断窗口是否存在,如果存在,再得到窗口所有控件,判断是否有某控件存在,从而根据需求是否关闭窗口。
如果你的情况真的是窗口名不确定、进程也不确定。在任何一个窗口上都可能出现这种控件,那需要扫描系统中所有窗口,得到窗口句柄后再扫描每个窗口的控件信息。
这些函数在帮助文档中都有示例的:
WinList
WinGetHandle
WinExists
WinGetClassList 回复 10# nmgwddj
是这样的,因为有多个窗口的标题、文本是一样的,但是里面的控件不一样,需要根据指定控件找到控件所属的窗口,如果每个窗口都遍历一遍控件有些麻烦,我想知道有没有函数可以根据控件找到该控件所属的窗口。
没有的话,只有遍历所有控件来判断了。
谢谢! 可以看看控件的文本信息之类的。 Run("NOTEPAD.EXE")
WinWaitActive("")
$h = ControlGetHandle("", "", "Edit1")
$h2=DllCall("user32.dll", "hwnd", "GetParent", "hwnd", $h)
Sleep(1000)
WinClose($h2)
如果知道窗口标题或类名,用GetParent获取控件父窗口句柄,然后关闭该句柄窗口。 回复 13# vuivui
知道了,谢谢! 回复 13# vuivui
知道了,我要的就是这个方法,谢谢!
页:
[1]