A tela liga depois que eu a desligo com o comando AutoHotkey

A tela liga depois que eu a desligo com o comando AutoHotkey

Eu uso estes dois atalhos para desligar a tela:

Launch_Mail::
#T:: SendMessage, 0x112, 0xF170, 2,, Program Manager

No entanto, não raramente, a tela liga instantaneamente depois que eu uso essa tecla de atalho. Eu pressiono novamente quatro a sete vezes e ele liga novamente. Aí ajusto um pouco o mouse e tento desligar. Às vezes funciona e às vezes não.

Além disso, se eu usar o botão 'Launch_Mail' para desligar a tela e isso não acontecer, uso o atalho '#T'. Na maioria das vezes isso funciona, mas também há momentos em que também não funciona.

O problema é com o mouse ou outra coisa? Devo também desabilitar o mouse na hora de desligar a tela.

Tentei pesquisar esse problema, mas não consegui encontrar nada semelhante à minha situação.

Não sei se isso é muito relevante, mas uso Windows 8.1 e AHK v1.1.22.06

Responder1

Parece que você está usando o script daqui:https://autohotkey.com/docs/commands/PostMessage.htmque fornece o seguinte código:

#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

Eu tenho que perguntar: você está usando o script completo, ou apenas aquela linha, porque de acordo com os comentários, -1 deveria ligar o monitor novamente, sugerindo que seu script pode estar executando os comandos off e on consecutivos.

Responder2

Provavelmente é a liberação da(s) tecla(s) de atalho que liga o display novamente. Isso pode ser resolvido com um "tempo limite", como na resposta de David Metcalfe, ou simplesmente aguardando até que a tecla de atalho seja liberada e só então desligando o display. A maneira idiomática de fazer isso é usar o upmodificador (veja odocumentação).

Launch_Mail Up::
#T Up:: SendMessage, 0x112, 0xF170, 2,, Program Manager

Responder3

Com isso você vai esperar que suas chaves sejam liberadas, basta substituir pelas chaves que você deseja, aqui estou usando Alt+ Space:

!Space::
    KeyWait Alt
    KeyWait Space
    SendMessage,0x112,0xF170,2,,Program Manager
Return

informação relacionada