PDA

Ver la Versión Completa : Enviar tecla a una ventana


Omega
09-07-2008, 20:28:46
Hola. Soy nuevo en este foro y tengo una duda, haber si me la aclaráis.

¿Es posible con Delphi enviar pulsaciones a una ventana aunque el foco este en otra?

PD: No sabia muy bien en que subforo poner esto, pero de ser posible creo que es con la API.

Saludos y gracias.

coso
09-07-2008, 21:46:31
hola,
este tema se ha tratado varias veces. Si haces una busqueda por el foro seguramente encontraras algo que te interese. Saludos

Omega
10-07-2008, 17:26:00
Hola, soy de usar el buscador y ya estuve mirando varios temas pero no me queda claro.

Lo que quiero hacer es enviar ENTER a una aplicación, para ello se que primero hay que obtener la ventana que es y luego enviar el ENTER, he estado haciendo pruebas y nada. Esto es lo que llevo:


procedure TForm1.Button1Click(Sender: TObject);
var h: Cardinal;
begin
h := FindWindow(nil,'a.txt - Bloc de notas');
if h <> 0 then begin
SendMessage(h, WM_KEYDOWN, VK_RETURN, 0);
end
else
begin
showmessage('No se encuentra la ventana');
end;
end;


Edito: Había 2 linea que no servían para nada y una cosa que me había comido. jeje

Saludos y gracias.

coso
10-07-2008, 17:54:45
Hola de nuevo

Tu codigo funciona correctamente : si creas una aplicación destino con un boton 'default' y haces que este codigo te apunte alla, te lo pulsa. El problema debe ser que el notepad.exe da el foco o bien al menu o bien a algun otro componente cuando no esta activado.

saludos

Omega
10-07-2008, 18:13:08
He hecho un simple programa con un botón que al pulsarlo suelta un mensaje y tampoco va. ¿Seguro que mi código esta bien? =S

coso
10-07-2008, 18:18:38
Si, perdona. Use el PostMessage (estaba haciendo pruebas) en vez del SendMessage, y el boton en default.

Omega
10-07-2008, 18:51:09
Ya funciona, aunque con la aplicación original con la que hice de prueba no =S pero bueno...

Ahora solo me queda la segunda parte, pulsar tres teclas a la vez. Voy a hacer pruebas :D

Gracias.