Título: Script que deje apretado tecla Shift Publicado por: vampirolicano en 18 Julio 2017, 15:09 pm Hola que tal a todos. queria saber si podrian ayudarme para hacer un script de teclado. He investigado y leido en el foro y lorgre hacer que se precione la tecla shift pero no logro que quede apretada.
Necesito que la tecla Shift quede presionada (es para un juego que manteniendo presionado esa tecla hace una accion) Código: Set objshell = createobject("wscript.shell") Título: Re: Script que deje apretado tecla Shift Publicado por: MCKSys Argentina en 18 Julio 2017, 17:14 pm Hola!
El objeto WshShell no provee una forma de mandar ventos KeyUp y KeyDown. Lo mejor que puedes hacer para obtener lo que quieres, es hacer que la tecla se repita las veces necesarias. Esto lo puedes lograr colocando SendKeys en un loop o poniendo un numero despues de la tecla entre llaves: Código
Lo anterior debería apretar shift 40 veces. Source: https://stackoverflow.com/questions/42422088/permanently-press-key-via-vbs-keep-key-pressed (https://stackoverflow.com/questions/42422088/permanently-press-key-via-vbs-keep-key-pressed) Saludos! Título: Re: Script que deje apretado tecla Shift Publicado por: Eleкtro en 19 Julio 2017, 01:14 am El método SendKeys() es muy limitado, igual que el lenguaje VBS, donde ni tan siquiera se puede llamar a la API de Windows sin recurrir a la instalación de componentes de terceros.
Tengamos presente que Windows no es solo Batch y VBS, hay otros lenguajes soportados de forma nativa y son mucho más potentes/completos, como JS, y PowerShell. En este último lenguaje podemos simplificar muchas tareas, pero para intentar demostrar el potencial de este lenguaje yo he optado por compilar una clase escrita en otro lenguaje adicional, VB.NET (aunque también podría haber sido C#, F# o VC++), con una clase donde he implementado los métodos necesarios y los P/Invokes para hacer lo que pides (ejecutar el notepad y activar el foco de ventana, y luego mantener pulsada una tecla). No es necesario conocer el lenguaje VB.NET, tan solo debes fijarte en las 3 últimas lineas al final de este código: Script.ps1 Código
El modo de empleo es muy sencillo, abstraido de cualquier complejidad. Con el método Elektro.ProcessTools.RunNotepad() se ejecuta una nueva instancia del proceso Notepad.exe (o el hijack correspondiente que haya definido en el sistema) y se activa el foco de ventana. Con el método Elektro.KeyboardTools.PressKey(Keys) se simula una pulsación del teclado de la tecla que deseemos (la tecla se mantendrá pulsada), y con el método Elektro.KeyboardTools.ReleaseKey(Keys) liberamos la tecla que previamente habiamos pulsado. Espero que te sirva de ayuda. PD: Nótese que el miembro keybd_event de la API de Windows está considerado obsoleto, esto en realidad debería reemplazarse por la utilización de la infraestructura SENDINPUT, sin embargo la implementación de los miembros necesarios habría extendido el código de ejemplo en varios cientos de lineas, así que simplemente lo he preferido hacer así como una decisión de diseño y simplificación; esto es tan solo un ejemplo ordinario y funcional, no una solución optimizada. Saludos |