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ı: 16)
"…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 ile cmd komut göndermek ve yanıt almak yhackup 22 14.052 21-07-2021, Saat: 23:29
Son Yorum: pro_imaj
  Delphi Formlar Arası Nesne Taşıma software444 2 299 26-06-2021, Saat: 15:26
Son Yorum: mcuyan
  Delphi Tarafında Hash Üretme COMMANDX 2 1.422 25-06-2021, Saat: 15:52
Son Yorum: COMMANDX
  Delphi başlangıç minekirenli 5 517 23-06-2021, Saat: 17:03
Son Yorum: minekirenli
  Delphi - FDQuery - CxGrid cihankoca 3 408 17-06-2021, Saat: 18:04
Son Yorum: yasard



Konuyu Okuyanlar: 1 Ziyaretçi