如何检查Windows桌面是否已锁定

时间:2013-09-29 15:45:22

标签: windows-7 autoit

问:在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)

1 个答案:

答案 0 :(得分:3)

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

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

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

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