Как позволить Auto-Hotkey Script пережить блокировку рабочего стола?

567
Peter

Я получил скрипт Auto-Hotkey

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. #Warn ; Recommended for catching common errors. SendMode Event ; Input worked hardly, "Event" is better. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. SetTitleMatchMode, 1 ; 1: A window's title must start with the specified WinTitle to be a match.  #IfWinActive Zooming Viewer ~RButton & WheelDown:: Send  return ~RButton & WheelUp:: Send  return 

Ссылка: Как мне сделать так, чтобы Auto Hotkey конвертировал «RButton down, Mousewheel action, RButton up» в «MButton down, Mouse перемещается вверх и вниз, MButton вверх» »

Как сделать так, чтобы этот скрипт выживал при блокировке рабочего стола на Win-7? После освобождения заблокированного компьютера программа просмотра ведет себя как без AHK-скрипта. Щелкнув по меню сценария в области уведомлений, выбрав «Перезагрузить этот сценарий», он снова заработает, но его принудительное выполнение выглядит немного раздражающим.

1

1 ответ на вопрос

0
user3419297

Пытаться

#Warn ; Recommended for catching common errors. SendMode Event ; Input worked hardly, "Event" is better. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. SetTitleMatchMode, 1 ; 1: A window's title must start with the specified WinTitle to be a match.  MsgBox, Reloading  OnMessage(0x2b1,"WM_WTSSESSION_CHANGE") Gui,+LastFound hwnd:=WinExist() DllCall("Wtsapi32.dll\WTSRegisterSessionNotification","UInt",hwnd,"UInt",0) Return   #IfWinActive Zooming Viewer  ~RButton & WheelDown:: Send  return ~RButton & WheelUp:: Send  return  #IfWinActive  WM_WTSSESSION_CHANGE(wParam,lParam){ static _0x1:="WTS_CONSOLE_CONNECT" ;A session was connected to the console terminal. ; ,_0x2:="WTS_CONSOLE_DISCONNECT" ;A session was disconnected from the console terminal. ; ,_0x3:="WTS_REMOTE_CONNECT" ;A session was connected to the remote terminal. ; ,_0x4:="WTS_REMOTE_DISCONNECT" ;A session was disconnected from the remote terminal. ,_0x5:="WTS_SESSION_LOGON" ;A user has logged on to the session. ; ,_0x6:="WTS_SESSION_LOGOFF" ;A user has logged off the session. ; ,_0x7:="WTS_SESSION_LOCK" ;A session has been locked. ,_0x8:="WTS_SESSION_UNLOCK" ;A session has been unlocked. ; ,_0x9:="WTS_SESSION_REMOTE_CONTROL" ;A session has changed its remote controlled status. To determine the status, call GetSystemMetrics and check the SM_REMOTECONTROL metric. Reload } 

https://autohotkey.com/board/topic/42717-how-to-execute-a-script-when-a-computer-is-locked/page-2#entry266488

Согласно источнику, он предназначен для «обнаружения блокировки рабочей станции». Я не хочу это обнаруживать, я просто хочу позволить сценарию пережить блокировку (или, скорее, разблокировку?). Если скрипт больше не запускается, как должно помочь обнаружение блокировки? Peter 6 лет назад 0
В моей системе это работает. Я получаю сообщение «Перезагрузка» после блокировки (Win + L) и разблокировки (входа в систему) рабочей станции. user3419297 6 лет назад 0
Или вы хотели запустить другой сценарий, который контролирует другой сценарий и перезагружает его при необходимости? Peter 6 лет назад 0
Нет, во время работы скрипта я нажимаю Win + L и после входа в систему получаю сообщение «Перезагрузка» из того же скрипта. user3419297 6 лет назад 0
Если это сработает, я думаю, что есть еще одна проблема, которая решается путем перезапуска. Если этот сценарий может обнаружить разблокировку, он также должен выполнить свою реальную задачу - перевод с колесом прокрутки. Или я не прав? Peter 6 лет назад 0
Конечно, это происходит в моей системе. Ты это пробовал? user3419297 6 лет назад 0
Строка `MsgBox, Reloading` предназначена только для тестирования скрипта. Вы можете удалить его, если скрипт работает. user3419297 6 лет назад 0