
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 up
modificador (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