Modificar un script

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

ATBC
Posts: 2
Joined: 06 Dec 2017, 19:47

Modificar un script

07 Dec 2017, 01:17

Hola que tal!, les quería hacer una consulta a ver si me pueden ayudar con un script que utilizo para lanzar un juego y funciona bien, pero me gustaría modificar.

La idea es poder lanzar el script y a la vez que se puedan bloquear las teclas Escape, Enter y el Mouse por un tiempo de 4 segundos aproximadamente mientras carga el script.
Buscando soluciones encontré el comando BlockInput, que podría servir para bloquear esas 2 teclas y el mouse pero no logro que bloquee la tecla Escape.

El problema es que agregándole BlockInput, todas las teclas se bloquean pero la letra Escape sigue funcionando.
Les muestro mi script para ver si pueden ayudarme.

BlockInput On
Run, %executable% "%romPath%%romName%%romExtension%", %emuPath%, UseErrorLevel
sleep 4000
BlockInput off
if (ErrorLevel = 0){
Process, waitClose, %executable%
}else{
MsgBox, 48, Error,Failed to run executable,6
}

ExitApp

CloseProcess:
return

Espero haberme podido explicar. Desde ya muchas gracias por su tiempo!.
A_AhkUser
Posts: 1147
Joined: 06 Mar 2017, 16:18
Location: France
Contact:

Re: Modificar un script

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.
my scripts
ATBC
Posts: 2
Joined: 06 Dec 2017, 19:47

Re: Modificar un script

08 Dec 2017, 01:57

Hola A_AhkUser!.
Muchas gracias por ayudarme y tomarte la molestia.

Probé el script que me dejaste y funciona muy bien pero por lo que veo, tengo algo que impide que se bloquee mi tecla escape porque sigue funcionando a pesar de haber cambiado el script. Se bloquea el Enter y el Mouse pero la tecla Escape no hay manera de detenerla.
Quizá sea el propio programa que utilizo para lanzar el script que lo impide.

Yo al apretar Enter, el script lanza el juego, y al apretar Escape lo cierra. Mi idea era que al apretar Enter se bloqueen las teclas 4 segundos para que se abra el juego sin problemas, ya que a veces apreto las teclas muy rápido (Enter o Escape) para abrir o cerrar el juego y genera problemas.

Voy a seguir investigando mañana,a ver si encuentro algo!.

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 17 guests