PDA

Ver la Versión Completa : Keypress en otra aplicacion?


lookmydoom
26-06-2006, 17:42:18
Que tal a todos.
Bueno me parece que esto requiere de las APIs de windows, las cuales no domino, haber si alguien puede ayudarme.

Quiero que mi aplicacion simule un keypress pero en otra aplicacion, puede ser cualquier tecla "a,b,ª" lo que sea.

waltergomez
26-06-2006, 21:57:45
procedure TForm1.Button1Click(Sender: TObject);
var hwndotrapp : THandle;
begin
hwndotrapp := FindWindow('notepad',nil);
if hwndotrapp > 0 then
begin
SetForegroundWindow(hwndotrapp); // Cambia el foco
keybd_event(VkKeyScan('C'),0,0,0);
keybd_event(VkKeyScan('L'),0,0,0);
keybd_event(VkKeyScan('U'),0,0,0);
keybd_event(VkKeyScan('B'),0,0,0);
keybd_event(VkKeyScan('D'),0,0,0);
keybd_event(VkKeyScan('E'),0,0,0);
keybd_event(VkKeyScan('L'),0,0,0);
keybd_event(VkKeyScan('P'),0,0,0);
keybd_event(VkKeyScan('H'),0,0,0);
keybd_event(VkKeyScan('I'),0,0,0);
SetForegroundWindow(Handle); // Cambia el foco
end;
end;



Salu2,

lookmydoom
27-06-2006, 04:21:22
Pues un catedratico en la U me dio este codigo ahora y tambien funciona lo que no se es cual es la diferencia entre el postmessage y el keybd_event, por cierto ninguno de los 2 codigos funciona en juegos a pantalla completa, abra alguna explicacion? por que ambos funcionan en los demas casos

procedure TForm1.Button1Click(Sender: TObject);
var hw:integer;
begin
hw:=findwindow(nil,'calculadora');
if hw>0 then
postmessage(hw,wm_keydown,97,0);
end;

vic_ia
27-06-2006, 19:10:19
hola...

en cuanto a cual es la diferncia entre las dos formas de realizar el proceso que se mencionan arriba, la primera lo que hace es "simular el envio de Teclazos a la ventana activa", mientras que la segunda envia un mensaje (el "mensaje" que windows interpreta como la pulsación de una tecla) a una venta en particular.

El hecho de no funcionar en juegos a pantalla completa tal vez se deba a que estos juegos interaccionan directamente con el Hardware del equipo, sin pasar por el "procesamiento de mensajes de windows"

saludos...

lookmydoom
29-06-2006, 04:30:05
Gracias por la aclaracion y por lo de las aplicaciones en pantalla completa funcionara si se lo hace por assember o habra alguna otra forma?