Delphi消息截获

来源:互联网 发布:java web权限管理框架 编辑:程序博客网 时间:2024/05/16 14:08

Delphi中的消息截获

万一博客钩子入门

Delphi中的消息钩子函数和Windows子类处理 入门篇 - 刘景军[Eddie Liu]的专栏 - CSDN博客  5/


TMyEdit = class (TEdit)publicprocedure WndProc(var Message:TMessage);override;end;{ TMyEdit }procedure TMyEdit.WndProc(var Message: TMessage);beginif Message.Msg = WM_KEYDOWN THENbeginShowMessage('dd');exit;endelseinherited;end;procedure TForm1.Button2Click(Sender: TObject);varMyEdit: TMyedit;beginMyedit:=TMyEdit.Create (self);MyEdit.Parent := Form1;end;这样就可以了 ,不过如果要拦截字符消息得用WM_CHAR不过我决的用下面的方法更好function NewProc(hwnd: HWND;msg: UINT;wparam: WPARAM;lparam: LPARAM):LRESULT;stdcall;begincase Msg ofWM_KEYDOWN,WM_KEYUP,WM_CHAR,WM_IME_CHAR:beginResult:= 0;Exit;end;elseResult:= CallWindowProc(oldProc,hwnd,msg,wparam,lparam);end;end;procedure TForm1.FormCreate(Sender: TObject);beginOldProc:= Pointer(SetWindowlong(Edit1.Handle,GWL_WNDPROC,Longint(@NewProc)));end;

封杀键盘:procedure TMyEdit.WndProc(var Message: TMessage);begincase Message.Msg ofWM_KEYFIRST..WM_KEYLAST: Exit;else inherited;end;end;