Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Keypress en otra aplicacion? (https://www.clubdelphi.com/foros/showthread.php?t=33055)

lookmydoom 26-06-2006 17:42:18

Keypress en otra aplicacion?
 
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

Código Delphi [-]
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
Código Delphi [-]
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?


La franja horaria es GMT +2. Ahora son las 20:37:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi