نوشته شده توسط
سیروس مقصودی
با سلام
من ميخواهم در فرم اصلي برنامه , كليدي را تعريف كنم كه كاربر هر موقع و در هركجاي سيستم كه كليدهاي مورد نظر را فشار ميدهد برنامه اي را اجرا كند . برنامه ام حدودا 30 تا فرم دارد .من ميخواهم اين كليدها در تمام فرم اجرا شود يعني كاربر حتي در داخل هر فرمي كه اين كليد را فشار ميدهد برنامه اجرا شود .
با تشكر
می تونید از Hook استفاده کنید
برای نمونه در فرم اصلی برنامه کدهای زیر رو درج کنید تا با فشردن کلید F3 در هر کدام از فرم ها، پیغام درج شده نمایش داده شود:
.
.
.
var
Form1: TForm1;
KBHook: HHook;
procedure KeyboardHookProc(Code: Integer; WordParam: Word; LongParam: LongInt); stdcall;
implementation
.
.
.
procedure KeyboardHookProc(Code: Integer; WordParam: Word; LongParam: LongInt);
begin
if WordParam = VK_F3 then
ShowMessage('alirezapuyafar@gmail.com');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
KBHook:=SetWindowsHookEx(WH_KEYBOARD, @KeyboardHookProc, HInstance, GetCurrentThreadId()) ;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnHookWindowsHookEx(KBHook) ;
end;