Ver Mensaje Individual
  #4  
Antiguo 22-07-2011
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Reputación: 20
_cero_ Va por buen camino
mmm tampoco estoy muy seguro de porque el set focus no funciona, supongo que necesitas hacer más con la aplicación externa (no sabría decirte que, revisa la MSDN), pero para sintetizar teclas yo uso el “keybd_event” el problema de esta función es que no manda teclas a una ventana sino a quien tiene el foco, así que lo que podrías hacer es:

1 evitar que tu aplicación reciba el foco.
2 poner darle el foco a la aplicación X.
3 usar “keybd_event” para sintetizar teclas.

Te pongo código
paso 1, esto va en el OnCreate
Código:
    long wsex=GetWindowLongPtr(Handle,GWL_EXSTYLE);
    wsex |= WS_EX_NOACTIVATE;
    SetWindowLongPtr(Handle,GWL_EXSTYLE,wsex);
    SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE+SWP_NOMOVE);
paso 3
Código:
    String Cadena = "LAS LETRAS MAYUSCULAS";

    for(int i = 1; i <= Cadena.Length(); i++) {
        keybd_event( Cadena[ i ], 0, 0, 0 );
        keybd_event( Cadena[ i ], 0, KEYEVENTF_KEYUP, 0 );
    }

    keybd_event( VK_RETURN, 0, 0, 0 );              //
    keybd_event( VK_RETURN, 0, KEYEVENTF_KEYUP, 0); //Mando un enter
el problema de esto es que el código que puse es lo básico de un teclado virtual, es decir el usuario enfoca la aplicación y escribe desde la nuestra (con botones), pero no sé cómo simular el enfoque, si por ahí te sale lo posteas, para saber.
Responder Con Cita