Что нового

Пауза в скрипте на время Lock'a компа и продолжение после unlocka

amorph

Новичок
Сообщения
12
Репутация
2
Приветствую!

Есть такой скрипт:

Код:
;какие то действия...

Run("rundll32.exe user32.dll,LockWorkStation")  ;лочим комп (аналог Win+L)

;вот тут надо как то отслеживать, что комп залочен и скрипт дальше не выполнять
;как только разлочили комп, продолжаем выполнение.


Как отловить это состояние?

з.ы. нагуглить ничего вразумительного по теме не получилось (или не то, или слишком сложно для моего понимания:smile:)
на всякий случай: ОС Win 7 x64
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Как отловить это состояние?
Код:
$DESKTOP_SWITCHDESKTOP = 0x100

While 1
    If _IsLocked() Then
        ConsoleWrite("Workstation is locked." & @CR)
    Else
        ConsoleWrite("Workstation not locked." & @CR)
    EndIf
    Sleep(1000)
WEnd

Func _IsLocked()
    $hDesktop = DllCall("User32.dll", "int", "OpenDesktop", "str", "Default", "int", 0, "int", 0, "int", $DESKTOP_SWITCHDESKTOP)
    $ret = DllCall("User32.dll", "int", "SwitchDesktop", "int", $hDesktop[0])
    DllCall("User32.dll", "int", "CloseDesktop", "int", $ret[0])

    If $ret[0] Then
        Return SetError(0, 0, 0)
    Else
        Return SetError(0, 0, 1)
    EndIf
EndFunc   ;==>_IsLocked
 

artpluss

Новичок
Сообщения
21
Репутация
0
А как сделать так, чтобы после разблокировки скрипт выждал 1 минуту и потом продолжил выполняться?
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Код:
Send('#l')	;Включаем Lock режим

Do
Until Not _IsLocked()
Sleep(1 * 1000 * 60 * 60)	;Ждём 1 мин.

Func _IsLocked()
    $hDesktop = DllCall("User32.dll", "int", "OpenDesktop", "str", "Default", "int", 0, "int", 0, "int", 0x100)
    $ret = DllCall("User32.dll", "int", "SwitchDesktop", "int", $hDesktop[0])
    DllCall("User32.dll", "int", "CloseDesktop", "int", $ret[0])

    If $ret[0] Then
        Return SetError(0, 0, 0)
    Else
        Return SetError(0, 0, 1)
    EndIf
EndFunc   ;==>_IsLocked
 
Верх