Merhaba arkadaşlar
Bildiğiniz gibi şu kod ön planda çalışan bir programa tuş basılmış kodu gönderir.
procedure TForm1.Button1Click(Sender: TObject);
var
h: HWND;
begin
h := FindWindow(nil, 'Main Form Caption');
if h <> 0 then PostMessage(h, WM_KEYDOWN, 65,0);
end;
ancak programı ön plana almadan (ki onun da kodu var malum) arka planda olduğu halde bir tuş basıldı mesajı nasıl gönderilir.
Örnek, notepad arka planda olduğu halde notepad'e "merhaba dünya" nasıl yazdırılır.
Teşekkürler.
Fatih
Arka planda çalışan bir uygulamaya postmessage ile tuş gönd.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Arka planda çalışan bir uygulamaya postmessage ile tuş gönd.
Kod: Tümünü seç
I := 71
SendKeys('Prg. Caption', [VK_Menu, I]);
Kod: Tümünü seç
[code]function SendKeys(ClassOrCaption:PChar;Keys:array of Integer):Boolean;
var
hW:HWND;
Ix:Integer;
begin
Application.ProcessMessages;
hW:=FindWindow(ClassOrCaption,nil);
if hW<=0 then hW:=FindWindow(nil,ClassOrCaption);
Result:=hW>0;
if Result then begin
Result:=SetForeGroundWindow(hW);
if not Result then Exit;
for Ix:=0 to High(Keys) do KeyBd_Event(Keys[Ix], 0, 0, 0);
for Ix:=High(Keys) downto 0 do Keybd_Event(Keys[Ix], 0, KEYEVENTF_KEYUP, 0);
end;
ActivateWindow(Application.Handle);
end;
Re: Arka planda çalışan bir uygulamaya postmessage ile tuş gönd.
çok teşekkür ederim.
yalnız activatewindows apisi uses da hangi uniti kullanıyor?
yalnız activatewindows apisi uses da hangi uniti kullanıyor?