2012-03-28 6 views
5

Tengo un programa C que obtiene eventos del teclado sin problemas. Sin embargo, quiero usar Java para enviar eventos de teclado simulados. He intentado dos enfoques:Usar Java para enviar eventos simulados del teclado de Windows a un programa en C que usa SDL

  1. utilizar la clase Robot
  2. Llame a la función keybd_event en WIN32.DLL (nativo).

Los dos enfoques anteriores harán cosas como enviar claves a un editor de texto, etc. pero el otro programa (GIMX para ser exactos) no reconocerá los eventos. ¿Alguna idea de por qué sería esto y qué podría hacer para que Java se comunique con él?

+0

Si bien no estoy familiarizado con su problema, la documentación para keybd_event dice que use SendInput lugar: http://msdn.microsoft.com/en-us/library/windows/ desktop/ms646304 (v = vs.85) .aspx –

+0

¿Funciona con el Bloc de notas? Es decir. ¿El problema está en tu extremo o en el final de GIMX? – Ben

Respuesta

1

Ver aquí para una discusión relacionada:

http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/29cf2de9-412e-44dd-9050-174089d8e2a2/

En esencia, parece que necesita enviar de bajo nivel SendInput eventos, es decir, códigos de exploración para trabajar con DirectInput. Para usar códigos de escaneo, pase KEYEVENTF_SCANCODE en su estructura KBDINPUT y pase el código de escaneo en wScan.

Cuestiones relacionadas