
Я использую эти две комбинации клавиш для отключения дисплея:
Launch_Mail::
#T:: SendMessage, 0x112, 0xF170, 2,, Program Manager
Однако, нередко, дисплей мгновенно включается после использования этой горячей клавиши. Я нажимаю ее снова четыре-семь раз, и он снова включается. Затем я немного подстраиваю мышь и пробую выключить. Иногда это работает, а иногда нет.
Также, если я использую кнопку «Launch_Mail» для выключения дисплея, а он не выключается, я использую сочетание клавиш «#T». В большинстве случаев это работает, но бывают случаи, когда и это не работает.
Проблема с мышью или что-то еще? Стоит ли мне также отключать мышь в момент выключения дисплея.
Я пытался найти эту проблему, но не смог найти ничего похожего на мою ситуацию.
Не знаю, насколько это актуально, но я использую Windows 8.1 и AHK v1.1.22.06.
решение1
Поскольку, судя по всему, вы используете скрипт отсюда:https://autohotkey.com/docs/commands/PostMessage.htmкоторый предоставляет следующий код:
#o:: ; Win+O hotkey that turns off the monitor.
Sleep 1000 ; Give user a chance to release keys (in case their release would wake up the monitor again).
; Turn Monitor Off:
SendMessage, 0x112, 0xF170, 2,, Program Manager ; 0x112 is WM_SYSCOMMAND, 0xF170 is SC_MONITORPOWER.
; Note for the above: Use -1 in place of 2 to turn the monitor on.
; Use 1 in place of 2 to activate the monitor's low-power mode.
return
Я должен спросить: вы используете весь скрипт или только эту одну строку, потому что, согласно комментариям, -1 должен снова включать монитор, что говорит о том, что ваш скрипт может выполнять команды выключения и включения последовательно.
решение2
Вероятно, это происходит из-за отпускания горячей клавиши(-ок), которая снова включает дисплей. Это можно решить либо "тайм-аутом", как в ответе Дэвида Меткалфа, либо просто дождаться отпускания горячей клавиши и только после этого выключить дисплей. Идиоматическим способом сделать это является использование модификатора up
(см.документация).
Launch_Mail Up::
#T Up:: SendMessage, 0x112, 0xF170, 2,, Program Manager
решение3
При этом вам придется ждать, пока ваши клавиши будут освобождены, просто замените их на нужные вам клавиши, здесь я использую Alt+ Space:
!Space::
KeyWait Alt
KeyWait Space
SendMessage,0x112,0xF170,2,,Program Manager
Return