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.