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

Windows 7 如何检查Windows桌面是否已锁定,windows-7,autoit,Windows 7,Autoit,Q:在AutoIt中,如何检查Windows桌面是否已锁定 我所拥有的 让我们以AutoIt脚本为例。它在不确定循环中ping URL,并在托盘提示中报告响应时间 While 1 $responsetime = Ping("www.google.com") TrayTip("", $responsetime, 1) sleep(5000) Wend 期望结果 仅当桌面未锁定时,新脚本才应ping。但我还没有找到一个可靠的方法来检查这个 While 1 $isLo

Q:在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

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

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

幸运的是,程序切换器没有返回值
TaskSwitcherWnd
,所以在Windows7EnterpriseSP1 64位下,这似乎对我有效


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

使用
wingtitle
,您将无法从锁屏中获得标题:-(但是锁屏来自类
TaskSwitcherWnd
。因此,您只需查看
wingtclassist
的结果是否在其第一个位置有此项……如果使用
{Alt}+{Tab},也将是正确的。)
用于程序切换,但我认为在切换程序时不进行ping是一个公平的折衷。如果不使用
StringSplit
StringLeft($list,StringInStr($list,@LF)-1)
…由您决定。+1该函数正在工作。(顺便说一句,更好的是
{Alt}+{Tab}
没有给我一个真实的答案^^)是的,这也是我所经历的……但是当你将捕获光标从AutoIt窗口信息工具移到程序切换器上方时,
{Alt}{Tab}
,您将获得类
TaskSwitcherWnd
,结果是…无论如何,
TaskSwitcherWnd
窗口似乎不是活动窗口,但是没有类的窗口将返回
,而AutoIt可以识别为函数
wingtlasslist(“[active]”)
。从而使我的
secretfunctionidonknow
返回false…viola。
Func secretFunctionIdontKnow()
    $classes = StringSplit(WinGetClassList("[ACTIVE]"), @LF, 2)
    Return $classes[0] == "TaskSwitcherWnd"
EndFunc