Post by A_AhkUser » 07 Dec 2017, 08:44
Hola,
En esta situacion utilizaria en lugar de BlockInput 4 atajos de teclado y un temporizador - por ejemplo con el notepad:
Code: Select all
Hotkey, Escape, preventDefault, on
Hotkey, Enter, preventDefault, on
Hotkey, RButton, preventDefault, on
Hotkey, LButton, preventDefault, on
SetTimer, reEnableKeys, -4000 ; si el periodo (en milisegundos) es negativo, el temporizador es ejecutado solo una vez
Run, notepad.exe, %A_WinDir%\System32\, UseErrorLevel, PID ; PID coloca en PID el identificador unico del proceso
WinWait, ahk_pid %PID%,, 4 ; WinWait es mas reliable que sleep; 4 es, en segundo, el valor de tiempo de espera de WinWait
if not (ErrorLevel) ; si la ventana aparece antes de que se ha agotado el tiempo, ErrorLevel vale 0 (false)
SetTimer, waitClose, -1 ; eso permite que puedas ejecutar codigo mas abajo: Process, WaitClose bloquea temporalmente el thread
else MsgBox, 48,, Error
; mas codigo...
return
preventDefault:
return
reEnableKeys:
Hotkey, Escape, preventDefault, off
Hotkey, Enter, preventDefault, off
Hotkey, RButton, preventDefault, off
Hotkey, LButton, preventDefault, off
return
waitClose:
Process, waitClose, %PID%
MsgBox, The program will exit.
ExitApp
Por lo que se trata de BlockInput y por lo que a mí respecta, no puedo decirte porque no funciona con escape dado que nunca he utilzado BlockInput. De acuerdo con
la documentacion, BlockInput podria exigir que el script fuese ejecutado con privilegios administrativos.
Hola,
En esta situacion utilizaria en lugar de BlockInput 4 atajos de teclado y un temporizador - por ejemplo con el notepad:
[code]
Hotkey, Escape, preventDefault, on
Hotkey, Enter, preventDefault, on
Hotkey, RButton, preventDefault, on
Hotkey, LButton, preventDefault, on
SetTimer, reEnableKeys, -4000 ; si el periodo (en milisegundos) es negativo, el temporizador es ejecutado solo una vez
Run, notepad.exe, %A_WinDir%\System32\, UseErrorLevel, PID ; PID coloca en PID el identificador unico del proceso
WinWait, ahk_pid %PID%,, 4 ; WinWait es mas reliable que sleep; 4 es, en segundo, el valor de tiempo de espera de WinWait
if not (ErrorLevel) ; si la ventana aparece antes de que se ha agotado el tiempo, ErrorLevel vale 0 (false)
SetTimer, waitClose, -1 ; eso permite que puedas ejecutar codigo mas abajo: Process, WaitClose bloquea temporalmente el thread
else MsgBox, 48,, Error
; mas codigo...
return
preventDefault:
return
reEnableKeys:
Hotkey, Escape, preventDefault, off
Hotkey, Enter, preventDefault, off
Hotkey, RButton, preventDefault, off
Hotkey, LButton, preventDefault, off
return
waitClose:
Process, waitClose, %PID%
MsgBox, The program will exit.
ExitApp
[/code]
Por lo que se trata de BlockInput y por lo que a mí respecta, no puedo decirte porque no funciona con escape dado que nunca he utilzado BlockInput. De acuerdo con [url=https://www.autohotkey.com/docs/commands/BlockInput.htm#Remarks]la documentacion[/url], BlockInput podria exigir que el script fuese ejecutado con privilegios administrativos.