1

问:在 AutoIt 中,如何检查 Windows 桌面是否被锁定

我有的

让我们以这个 AutoIt 脚本为例。它以无限循环的方式 ping 一个 URL,并在托盘提示中报告响应时间。

While 1
    $responsetime = Ping("www.google.com")
    TrayTip("", $responsetime, 1)
    sleep(5000)
Wend

期望的结果

仅当桌面锁定时,新脚本才应 ping。但我还没有找到一种可靠的方法来检查这个

While 1
    $isLocked = secretFunctionIdontKnow
    If $isLocked = false Then
       Local $responsetime = Ping("www.google.com")
       TrayTip("", $responsetime, 1)
    EndIf
    sleep(5000)
Wend

提示:该功能WinExist("A")似乎不够可靠,因为没有任何打开窗口的桌面即使在解锁时也会报告 0 (=false)

4

1 回答 1

3

根据我上面的评论,您可以使用以下内容secretFunctionIdontKnow;-)

Func secretFunctionIdontKnow()
    $classes = StringSplit(WinGetClassList("[ACTIVE]"), @LF, 2)
    Return $classes[0] == "TaskSwitcherWnd"
EndFunc

幸运的是,程序切换器没有返回值TaskSwitcherWnd,所以这似乎对我在 Windows 7 Enterprise SP1 64 位下工作......

不要错过函数调用中的括号;-)

于 2013-09-30T09:16:30.947 回答