Başka Bir Programa Key Göndermek?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- Trial_Cooder
- Üye
- Mesajlar: 236
- Kayıt: 17 Nis 2006 04:44
Başka Bir Programa Key Göndermek?
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ı ?
Re: Başka Bir Programa Key Göndermek?
Bir kelimenin anlamını öğretsen bile yeter..



- Trial_Cooder
- Üye
- Mesajlar: 236
- Kayıt: 17 Nis 2006 04:44
Re: Başka Bir Programa Key Göndermek?
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
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
Re: Başka Bir Programa Key Göndermek?
Projene bir buton ekledim.
koda da
yazdım.
F1 i gönderdi.
uygulamanı kontrol et.
koda da
Kod: Tümünü seç
AppActivate('Adsız - Not Defteri');
SendKeys(PChar('{f1}'),true);
F1 i gönderdi.
uygulamanı kontrol et.
Bir kelimenin anlamını öğretsen bile yeter..



- Trial_Cooder
- Üye
- Mesajlar: 236
- Kayıt: 17 Nis 2006 04:44
Re: Başka Bir Programa Key Göndermek?
Peki Project1.exe'nin içindeki Keylogger bunu yakalayabiliyormu ? Hayır :S
Re: Başka Bir Programa Key Göndermek?
keylogger dersen orda dur. 

Bir kelimenin anlamını öğretsen bile yeter..



- Trial_Cooder
- Üye
- Mesajlar: 236
- Kayıt: 17 Nis 2006 04:44
Re: Başka Bir Programa Key Göndermek?
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.
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.
- Trial_Cooder
- Üye
- Mesajlar: 236
- Kayıt: 17 Nis 2006 04:44
Re: Başka Bir Programa Key Göndermek?
Sorunumu çözdüm, Sendkeys kullanmıyorum artık.
keybd_event(VK_SPACE,0,0,0);
keybd_event(VK_SPACE,0,0,0);
Re: Başka Bir Programa Key Göndermek?
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
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;
begin
halt;
end;
Re: Başka Bir Programa Key Göndermek?
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
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;
begin
halt;
end;