Başka Bir Programa Key Göndermek?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Başka Bir Programa Key Göndermek?

Mesaj gönderen Trial_Cooder »

Bir program var, dışarda veya program üstünde F1 tuşuna basınca onu algılıyor ve işlem yapıyor. Ben F1 tuşuna kendi programımdan bastırtmak istiyorum. Sendkeys ile bunu yapıyorum fakat diğer program bunu algılamıyor. Yani sanki yüzeysel bastırıyormuşum gibi. Windows pencerelerinden herhangi birine tıkladığımda ve programımdan F1'e bastırttığımda yardım menüsü açılıyor yani çalışıyor fakat diğer program bu F1'i algılamıyor. Nedendir acaba bilgisi olan varmı ?
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Başka Bir Programa Key Göndermek?

Mesaj gönderen conari »

makaleyi okudunuzmu?
Büyük ihtimal programı aktif etmiyorsunuz.
viewtopic.php?f=19&t=1587
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Re: Başka Bir Programa Key Göndermek?

Mesaj gönderen Trial_Cooder »

programı aktif ediyorum.

ufak bi program yaptım.

ne demek istediğimi bu programda anlayacaksınız. Program key tutuyor, ben SendKeys komutunu kullandığımda gönderdiğim key'i yakalayamıyor.

"Edit'i yazdır" buttonuna basın, edittekini sendkeys olarak gönderecektir. Üstteki memodada basılan keyler çıkacaktır


Proje Ekte
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Başka Bir Programa Key Göndermek?

Mesaj gönderen conari »

Projene bir buton ekledim.
koda da

Kod: Tümünü seç

  AppActivate('Adsız - Not Defteri');
  SendKeys(PChar('{f1}'),true);
yazdım.
F1 i gönderdi.
uygulamanı kontrol et.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Re: Başka Bir Programa Key Göndermek?

Mesaj gönderen Trial_Cooder »

Peki Project1.exe'nin içindeki Keylogger bunu yakalayabiliyormu ? Hayır :S
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Başka Bir Programa Key Göndermek?

Mesaj gönderen conari »

keylogger dersen orda dur. :!:
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Re: Başka Bir Programa Key Göndermek?

Mesaj gönderen Trial_Cooder »

Timer1'in OnTimer prosedüründe ve otomatik çalışıyor. Kaynak kodu açarsanız görebilirsiniz.
O keylogger'ı koymamın amacı sendkeys'de sorun olduğunu ıspatlamaktır. Diğer programların key yakalama yöntemide böyle o yüzden.


Örnek Proje : RapidShare: 1-CLICK Web hosting - Easy Filehosting
Örnek Video : RapidShare: 1-CLICK Web hosting - Easy Filehosting

Videoda gösterdiğim programın bastırdığı key'i yakalayabiliyorum fakat kendiminkini yakalayamıyorum.
En son Trial_Cooder tarafından 15 Tem 2009 01:46 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Re: Başka Bir Programa Key Göndermek?

Mesaj gönderen Trial_Cooder »

Sorunumu çözdüm, Sendkeys kullanmıyorum artık.

keybd_event(VK_SPACE,0,0,0);
Kullanıcı avatarı
CemErgun
Üye
Mesajlar: 91
Kayıt: 05 May 2009 11:31
Konum: antalya

Re: Başka Bir Programa Key Göndermek?

Mesaj gönderen CemErgun »

SendKeys functionuda zaten keybd_Event olarak gönderiyor...

sendmessage ile yapabilirsin fakat tuşlar kısıtlı biraz yada ord('a') yada ord('A') gibi
procedure TForm1.FormCreate(Sender: TObject);
begin
halt;
end;
Kullanıcı avatarı
CemErgun
Üye
Mesajlar: 91
Kayıt: 05 May 2009 11:31
Konum: antalya

Re: Başka Bir Programa Key Göndermek?

Mesaj gönderen CemErgun »

misal bi örnek vereyim tuşu programda bastırıcaksın ya

var
a:hwnd;
begin
a:=findwindow(nil,'programının tepe adı yada nil yazan yere class name'ini yazabilirsin');
SendMessage(a, WM_KEYDOWN,vk_f1,1);
SendMessage(a, WM_KEYUP,vk_f1,1);

belirlediğin programda f1 butonuna bastırır.

bak bi örnek daha vereyim

bir button ekle

procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(edit1.handle, WM_KEYDOWN, vk_f1,1);
SendMessage(edit1.handle, WM_KEYUP, vk_f1,1);
end;

bunu yaz.

sonra edit1 'in keydown yordamına gel

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
edit1.Text:='f1 oldu';
end;

bunuda oraya yaz. sonra buton a bas edit1'in textinin "f1 oldu"'ya döndüğünü göreceksin umarım yardımcı olabilmişimdir. kolay gelsin
procedure TForm1.FormCreate(Sender: TObject);
begin
halt;
end;
Cevapla