如何获取这类窗口句柄?
本帖最后由 tttbbb999 于 2012-3-5 14:03 编辑在Windows'快速启动工具栏' 点击 '显示桌面' 后.
会捕获到一个 'CLASS:WorksW' 前景窗口句柄.且标题栏为空
-----------------------------------------------------
如何在没点 '显示桌面' 时 获取该窗口的句柄.
以便在后面进行判断 前景窗口是否为该窗口.
用'Winlist()',能列出12个同类窗口句柄,且都没有窗口标题.没办法判断哪个是需要的.
已解决 经济的办法还没想好,关于'显示桌面'的东西太深了.只能用愚公移山的办法,能达到目的就好!#include <WinAPI.au3>
#include <WinAPIEx.au3>
$file = FileOpen("vDesk.scf",10) ;创建一个'显示桌面'的副本.
FileWriteLine($file,"")
FileWriteLine($file,"Command=2")
FileWriteLine($file,"IconFile=explorer.exe,3")
FileWriteLine($file,"")
FileWriteLine($file,"Command=ToggleDesktop")
FileClose($file)
ShellExecuteWait("vDesk.scf");执行这个动作
Sleep(1000)
Global $qWnd = _WinAPI_GetForegroundWindow();获取当前前景窗口句柄
Global Const $hWndDesktop = _WinAPI_GetDesktopWindow();桌面句宾
MsgBox(16,"",_WinAPI_GetClassName($qWnd)) ;显示所提取的句柄
While 1
Sleep(50)
;如果前景窗口为所提取的窗口就再执行一次,恢复桌面窗口为前景窗口.
If _WinAPI_GetForegroundWindow() = $qWnd Then
ShellExecuteWait("vDesk.scf")
EndIf
WEnd已解决 回复 2# tttbbb999 $ActiveWindow = WinGetHandle("")
While 1
If WinActive($ActiveWindow) Then
WinMinimizeAll()
EndIf
Sleep(100)
WEnd
$ActiveWindow = WinGetHandle("")
While 1
If WinActive('') Then
WinActivate($ActiveWindow)
EndIf
Sleep(100)
WEnd 回复tttbbb999
lixiaolong 发表于 2012-3-5 13:04 http://www.autoitx.com/images/common/back.gif
第一种方法可行,但需要提前运行'显示桌面'一次再执行脚本.否则获取到的窗口句柄就不是需要的了.
第二种方法行不通,通过类名获取窗口句柄不够准确,同类名的很多.12个以上,包括鼠标右键菜单. 挺好的过来学习一下! 奇怪了我列举所有窗口,就是没找到有WorksW
#include <WinAPI.au3>
#include <WinAPIEx.au3>
Local $file = FileOpen("test.txt", 10)
If $file = -1 Then
MsgBox(0, "错误", "不能打开文件.")
Exit
EndIf
Local $var = WinList()
For $i = 1 To $var
FileWrite($file, "标题=" & $var[$i] & @LF & " 句柄=" & $var[$i]& " 类=" &_WinAPI_GetClassName($var[$i])& @CRLF)
Next
FileClose($file)
ShellExecute("test.txt") 本帖最后由 lixiaolong 于 2012-3-5 20:41 编辑
回复 6# zldfsz
我这里运行'显示桌面'后只有一个【WorksW】,可能是环境有关?
只能用Au3Info能看到,Winlist()是搜不到。。。 回复 7# lixiaolong
我在win7下用Winlist()没发现WorksW,却发现了很多WorkerW 回复 8# zldfsz
还是环境有关吧,我也是Win7,用WinList()没发现有WorksW和WorkerW... Windows的窗口类 太多了.
Win7上面,很多窗口的类都跟Xp不匹配的~ 一直想找个更好的办法,无奈中~~
页:
[1]