Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi ile Hook (Kanca) atma örneği
#1
İyi akşamlar.
kendi programına lazım olduğu için test için yazdığım
form açık iken imleç nerede olursa olsun girilen değeri
istenilen yere atamak için hazırladım. (veya girilen tüm tuşları yakalamak için)
En basit hali ile örnek dosya ekte ihtiyacı olan geliştirsin.
@esistem  arkadaşımızın örnekleri yol gösterdi teşekkür ederim. 
 https://www.delphican.com/showthread.php?tid=421

{

Bu kodda amaç imleç nerede olursa olsun hook açık iken klavyeden veya Barkoddan yazılan okutulan bilgiler.
Otomatik istenilen edit yönlendiriliyor.
Hook kapalı iken imleç nerede ise oraya giriş yapılıyor.

}

unit Delphi_hook;

interface

uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,Vcl.ExtCtrls,
 Vcl.ComCtrls;

type
 TForm1 = class(TForm)
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   Label4: TLabel;
   Label5: TLabel;
   Edit1: TEdit;
   Edit2: TEdit;
   Edit3: TEdit;
   Edit4: TEdit;
   Edit5: TEdit;
   Button1: TButton;
   Button2: TButton;
   procedure FormDestroy(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 KBHook: HHook;  //giriş yakalama
 function KeyboardHookProc(Code: Integer; WordParam: Word; LongParam: LongInt): LongInt; stdcall;  // hook yakalama

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Tag=0 then
 begin
 KBHook:=SetWindowsHookEx(WH_KEYBOARD,@KeyboardHookProc,HInstance,GetCurrentThreadId()) ; //giriş yakalama
 button1.Caption:= 'Hook Kapat';
 Button1.Tag:=1;
 end else
     begin
     UnHookWindowsHookEx(KBHook);
     button1.Caption:= 'Hook Kapat';
     Button1.Tag:=0;
     end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Tag:=0;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnHookWindowsHookEx(KBHook)
End;

 function KeyboardHookProc(Code: Integer; WordParam: Word; LongParam: LongInt) : LongInt;
begin
 form1.edit5.SetFocus;

{ case WordParam of

        vk_Space: // boşluk tuşuna basıldı
         begin
         // boşluk tuşuna basıldı yapılacaklar
          end;

  vk_Right: showmessage('sağ ok basıldı');// sağ ok basıldı;
  vk_Left: showmessage('sol ok basıldı');// sağ ok basıldı;
  vk_Up: showmessage('yukari ok basıldı');// yukari ok basıldı;
  vk_Down: showmessage('aşağı ok basıldı');// yukari ok basıldı;
 end;} {case}
 Result:=0;
{To prevent Windows from passing the keystrokes  to the target window, the Result value must  be a nonzero value.}
end;
end.


Ek Dosyalar
.zip   Test_hook.zip (Dosya Boyutu: 5,79 KB / İndirme Sayısı: 25)
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#2
Teşekkürler.
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Cevapla
#3
Eline saglık..
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  delphi 10.4 deutsch1988 0 59 Dün, Saat: 11:46
Son Yorum: deutsch1988
  Delphi virus gibi deutsch1988 11 473 12-04-2024, Saat: 17:36
Son Yorum: deutsch1988
  Delphi 7 Unrar mcuyan 12 669 19-03-2024, Saat: 10:30
Son Yorum: frmman
Lightbulb Delphi 7zip Password lü Dosya Sıkıştırma ve Açma + Bonus RAR5 Desteği frmman 6 318 16-03-2024, Saat: 17:55
Son Yorum: delphi.developer
  delphi 12 ile TFileStream çalışmıyor aegean 5 527 05-03-2024, Saat: 22:23
Son Yorum: aegean



Konuyu Okuyanlar: 1 Ziyaretçi