1

Q: AutoIt で、Windows デスクトップがロックされているかどうかを確認するにはどうすればよいですか?

私が持っているもの

この AutoIt スクリプトの例を見てみましょう。URL に対して無限ループで ping を実行し、応答時間をトレイ ヒントに報告します。

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 に答える