Título: Simular Key Press !! Publicado por: TrashAmbishion en 21 Junio 2016, 07:39 am He probado varios codigos de la RED incluso el de Electro y no me funciona necesito simular que presiono la tecla F10, alguna idea mi sistema es Windows 8.1.
Codigo de Elektro http://foro.elhacker.net/buscador-t413217.0.html Probe este otro y nada http://www.visual-basic-tutorials.com/223201022306.php Es para hacer una captura de pantalla con el programa FRAP Título: Re: Simular Key Press !! Publicado por: Eleкtro en 21 Junio 2016, 09:57 am He probado varios codigos de la RED incluso el de Electro y no me funciona necesito simular que presiono la tecla F10, alguna idea mi sistema es Windows 8.1. Codigo de Elektro http://foro.elhacker.net/buscador-t413217.0.html Hola. El código que has citado no sirve para sintetizar pulsaciones de teclado, sino para enviar caracteres, por ende, no es posible utilizar las teclas especiales Fn. Aparte de eso, no está demasiado bien enfocada la implementación de los métodos, me refiero, la función que escribí se debería haber llamado SendChar en lugar de SendKey para evitar este tipo de confusión. Para enviar pulsaciones del teclado la metodología es practicamente idéntica, solo que obviamente no hay que realizar ninguna conversión a caracter. Puedes tratar de modificar el código que publiqué para ignorar la conversión a caracter a ver si así funciona como esperas. Te mostraría un ejemplo actualizado y completo pero son bastantes definiciones las que hay que usar y agrandaría demasiado (todavía más) esta respuesta, sin embargo, todo lo que necesitas lo puedes encontrar en la implementación que hice de RAW_INPUT en mi API ElektroKit, solo tienes que copiar y pegar los miembros relacionados entre sí: Código
+ ( click en las imágenes para ir al código fuente ) (http://i.imgur.com/FxwN4iT.png) (https://github.com/ElektroStudios/ElektroKit/blob/54636a57e20c90186b7915102809b0a2bb134ea0/Solution/Elektro.Interop/Win32/Types/Input32.vb) (http://i.imgur.com/IB7xpJD.png) (https://github.com/ElektroStudios/ElektroKit/blob/54636a57e20c90186b7915102809b0a2bb134ea0/Solution/Elektro.Interop/Win32/Types/Input64.vb) ( Además de las estructuras mencionadas, también necesitarás: Win32.Types.InputType, Win32.Types.MouseInput, Win32.Types.KeyboardInput y Win32.Types.HardwareInput ) + (http://i.imgur.com/qLGYaJy.png) (https://github.com/ElektroStudios/ElektroKit/blob/54636a57e20c90186b7915102809b0a2bb134ea0/Solution/Elektro.Core/IO/Enums/KeyAction.vb) (http://i.imgur.com/4yXGFn1.png) (https://github.com/ElektroStudios/ElektroKit/blob/54636a57e20c90186b7915102809b0a2bb134ea0/Solution/Elektro.Core/IO/Tools/Keyboard.vb) (Función: Keyboard.SendKey()) Nota: La estructura Input está dividida en dos, una para ser utilizada bajo Windows x86, y la otra para Windows x64. Y a raíz de lo mencionado hay una condicional para utilizar una estructura o la otra en el bloque del método SendKey (entre otros). El motivo de todo esto es que en un principio se me dificultó la tarea de portabilizar la estructura, sin embargo, todo eso ya lo refactoricé y lo simplifiqué, pero el código que hay publicado en GitHub está desactualizado (de todas formas te funcionará correctamente. simplemente es un código feo o guarro por así decirlo). Si te parece mucho lio todo lo de arriba, la alternativa sería compilar la librería y/o descargar la última release ya compilada desde GitHub, y entonces simplemente tienes que llamar a la función Elektro.Core.IO.Tools.Keyboard.SendKey(). Ejemplo de uso: Código
Saludos Título: Re: Simular Key Press !! Publicado por: TrashAmbishion en 22 Junio 2016, 00:21 am Que tal Elektro gracias por tu pronta respuesta, bueno no estaba muy familiarizado con el GitHub ya (gracias a ti) toy un poco mas actualizado con el.
Bueno tome el ultimo ejemplo que pusistes y en esta linea Código
El KeyBehavior me lo sigue marcando como que no lo reconoce y para colmo perdi tu CHM mañana lo descargo. Título: Re: Simular Key Press !! Publicado por: okik en 22 Junio 2016, 02:30 am hola
MODO 1 USANDO SENDINPUT Código
MODO 2 USANDO KEYBD_EVENT Código
Por ahí hay gente que aconseja usar SendInput, pero funciona en los dos casos. Por lo menos en mi OS, en el tuyo no se. Ambos usan User32.dll. Título: Re: Simular Key Press !! Publicado por: Eleкtro en 22 Junio 2016, 07:25 am @okik
Hola. Por ahí hay gente que aconseja usar SendInput El problema con la función keybd_event, aparte de la limitada versatilidad que proporciona en comparación, es que está considerada obsoleta. Es una función muy, muy antigua, y esto significa que en cualquier momento podría desaparecer en la API de futuras versiones de Windows, y por ende, volverse incompatible con ciertas aplicaciones que sigan usando esta metodología (como ha ido sucediendo a lo largo de los años con otras funciones consideradas obsoletas). funciona en los dos casos. En realidad no, la definición que has compartido de SendInput solo funcionará bajo Windows/proceso de 32 Bits. No funcionará en Windows/proceso de 64 Bits. La alineación de offsets que has definido es incorrecta, puesto que en Windows de 64 Bits la unión de miembros empezará en el byte 8, no 4. Si usas la funcionalidad CA (Code Analysis) de Visual Studio, te advertirá de este problema diciéndote que los miembros de la estructura Input no son portables. O también puedes compilar el código bajo x64 (no AnyCPU/Preffer 32Bit) para comprobar que efectivamente no funciona, no se sintetizan las pulsaciones. La solución a este problema es muy sencilla, simplemente los miembros de la estructura SendInput deben ser declarados de forma secuencial, no explícita. Aparte, debes mover las estructuras MOUSEINPUT, KEYBDINPUT, HARDWAREINPUT a una estructura diferente y entonces sí, alinear las posiciones de la unión de miembros de forma explícita. Con el código que actualmente has compartido, esta sería la solución para portabilizar tu estructura Input: Código
Saludos Título: Re: Simular Key Press !! Publicado por: TrashAmbishion en 23 Junio 2016, 18:56 pm Dios jajajaja :o :o :o :o
Embullate da clases online... GGG Bueno entre tanto y tanto el Metodo 2 me funciono no obstante probare el 1ero con los ajustes y comento. PD: Mas me interesa poder hacer la captura de la imagen del juego sin necesidad de usar un programa externo que me haga esto, es el objetivo de este codigo. Que ya estoy cerca de resolver. Salu2 y Graciasss |