Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: unknown1111 en 5 Diciembre 2017, 12:23 pm



Título: Es posible hacer un script para que pulse 3 teclas a la vez?
Publicado por: unknown1111 en 5 Diciembre 2017, 12:23 pm
Bueno gente tengo que averiguar como hacer un script para que se ejecuten la tecla "FN" + "F12" + "Ctrl (Derecho)" de mi teclado.

He mirado cosas por internet y no me ha quedado claro. Mi finalidad con esto es crear un .Bat que cuando se ejecute el sistema se ejecute ese script con esa combinación de teclas.


Título: Re: Es posible hacer un script para que pulse 3 teclas a la vez?
Publicado por: engel lex en 5 Diciembre 2017, 14:02 pm
el asunto es que usualmente fn no es una tecla que se virtualize en el OS, usualmente invoca una secuencia de hardware diferente que manda una tabla virtualizada al os, así que tendrías que ver que virutalizacion envía esa secuencia (si se requiere) y tu virtualizar esa

palabra del día: virtualización XD


Título: Re: Es posible hacer un script para que pulse 3 teclas a la vez?
Publicado por: Eleкtro en 7 Diciembre 2017, 01:14 am
Citar
Es posible hacer un script para que pulse 3 teclas a la vez?

Si, por supuesto, puedes registrar en el sistema operativo una combinación global de teclas de acceso directo que consista en 3 teclas: un modificador de tecla (ALT, CONTROL, SHIFT, WINDOWS o {NINGUNO}) y una combinación de dos teclas virtuales.

Mi finalidad con esto es crear un .Bat

En una herramienta tan simple, básica y limitada como Batch no puedes... ni de lejos. En otro lenguaje capacitado, sí, aunque hasta donde yo sé no es posible asignar la tecla CONTROL derecho como modificador de tecla, sino ambas teclas CONTROL al mismo tiempo (izquierda o derecha) como se especifica en la documentación de la función RegisterHotKey:

  • RegisterHotKey function | MSDN (https://msdn.microsoft.com/es-es/library/windows/desktop/ms646309%28v=vs.85%29.aspx)

Para registrar (de forma temporal, durante la ejecución de tu programa/script) una combinación global de teclas de acceso directo, tienes que llamar a dicha función de Windows, RegisterHotKey, pasándole como primer argumento el modificador de tecla CONTROL (MOD_CONTROL) u otro modificador de tecla de los que están disponibles, y como segundo argumento le pasarías una tecla o una combinación de teclas virtuales que desees, en este caso la tecla "Function / Fn", y "F12" (VK_F12).

No dispongo de un teclado con la tecla "Fn", así que no puedo testearlo, probar y comprobar, pero en teoría creo que deberías poder usar la función MapVirtualKey / MapVirtualKeyEx para ello, aunque no estoy muy seguro sin probarlo primero... te dejo por aquí la documentación:

  • MapVirtualKey | MSDN (https://msdn.microsoft.com/en-us/library/windows/desktop/ms646306(v=vs.85).aspx)
  • MapVirtualKeyEx | MSDN (https://msdn.microsoft.com/en-us/library/windows/desktop/ms646307(v=vs.85).aspx)



En resumen, lo que deberías hacer es buscar un lenguaje de verdad (no Batch, que ni es lenguaje ni es nada) que te permita realizar llamadas de invocación de plataforma a la función RegisterHotKey de la API de Windows (yo te recomendaría C# o VB.NET, pero "cualquier" otro lenguaje sirve).

También puedes usar cualquier otro lenguaje de alto nivel de abstracción con wrappers de esa función de Windows para facilitarte la tarea y la comprensión si no tienes un suficiente nivel de aprendizaje y comprensión con la programación, como por ejemplo podría ser el lenguaje de scripting AutoIt, el cual fue diseñado para automatizar con sencillez este tipo de escenarios enfocados al uso del teclado y el mouse:

  • HotKeySet | AutoIt (https://www.autoitscript.com/autoit3/docs/functions/HotKeySet.htm)

Saludos.