Mandar tecla a juego mediante SendRaw

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

Moderator: Flipeador

alexitous
Posts: 3
Joined: 18 Dec 2015, 14:07

Mandar tecla a juego mediante SendRaw

18 Dec 2015, 14:32

Buenas, antes que nada pido disculpas por tener que pedir ayuda con algo que imagino será básico para los que llevéis tiempo usando este programa, pero acabo de descubrirlo hoy tras llevar un par de días volviéndome loco para hacerlo desde C# y el juego en cuestión (Rainbow Six Siege) no se traga las keypress de ninguna manera.


Con Autohotkeys por lo menos he confirmado que es viable hacerlo gracias a la herramienta de este usuario https://autohotkey.com/board/topic/9565 ... -tool-v32/ pulsándome la letra K con algunos de los métodos que incluye, pero ahí me he quedado.


Me he centrado en una de las funciones que sí logra mandar la pulsación al juego y he intentado adaptarla para ver si logro hacerla funcionar por mi cuenta quedando algo así:

j::
ToolTip, Testing K With SendRaw,0,0
sleep, 100
SendRaw, K

return

(el tooltip lo he dejado para ver si se activaba el script)


He estado haciendo alguna prueba y parece que en el escritorio o con el notepad sí que logro que se ejecute el script (aparece el tooltip y escribe la letra) pero en el juego no hace nada.


Algún consejo?
User avatar
Flipeador
Posts: 1205
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Mandar tecla a juego mediante SendRaw

18 Dec 2015, 15:32

¿ya probaste con SendPlay y SendInput?

Code: Select all

SendPlay, k
SendInput, k
Nota: SendPlay puede no tener ningún efecto en absoluto si UAC está habilitado, incluso si el script se está ejecutando como administrador.
alexitous
Posts: 3
Joined: 18 Dec 2015, 14:07

Re: Mandar tecla a juego mediante SendRaw

18 Dec 2015, 16:05

Buenas acabo de probar con esas dos funciones también, el problema es que parece que con la ventana del juego seleccionada no se ejecuta el script. Fuera de ella funciona perfectamente.


En la herramienta de SnowFlake te pide que introduzcas el nombre de la ventana a la que mandar las teclas, así que me imagino que irán por ahí los tiros. Llevo un rato repasándome el SC de su aplicación pero ando muy perdido con este lenguaje.
User avatar
Flipeador
Posts: 1205
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Mandar tecla a juego mediante SendRaw

18 Dec 2015, 19:16

y probaste con:

Code: Select all

ControlSend,, k, A
SendEvent, k
ControlSendRaw,, k, A
con el programa ese, ¿te funciona bién con la tecla "J" (como en tu primer ejemplo)?
la tecla "J", en el juego, ¿tiene una función asignada?, intenta probar con, por ejemplo, F12.
alexitous
Posts: 3
Joined: 18 Dec 2015, 14:07

Re: Mandar tecla a juego mediante SendRaw

18 Dec 2015, 20:15

Flipeador wrote:y probaste con:

Code: Select all

ControlSend,, k, A
SendEvent, k
ControlSendRaw,, k, A
con el programa ese, ¿te funciona bién con la tecla "J" (como en tu primer ejemplo)?
la tecla "J", en el juego, ¿tiene una función asignada?, intenta probar con, por ejemplo, F12.

El programa mandaba la tecla K y ejecutaba el test con F3.

En principio ya está, al parecer el problema estaba al intentar activar el script desde dentro del juego (en mi caso con j::) Si ejecutas el script externamente mientras juegas sí que recibe las keystrokes.

El script ha quedado así:

Code: Select all

dllcall("keybd_event", int, 0x4C, int, 0x025, int, 0, int, 0) //Pulsa K
Sleep, 200
dllcall("keybd_event", int, 0x4D, int, 0x026, int, 0, int, 0) //Pulsa L
Sleep, 40
dllcall("keybd_event", int, 0x4D, int, 0x026, int, 2, int, 0) //Libera L
Sleep, 50
dllcall("keybd_event", int, 0x4C, int, 0x025, int, 2, int, 0) //Libera K

return
Y ejecuto el .exe desde el triggerBot de C#.

Gracias por la ayuda!

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 29 guests