用跨进程子类化技术实现对其它进程消息的拦载

来源:互联网 发布:unity3d 如何导入动画 编辑:程序博客网 时间:2024/06/05 09:35

转自 剑神一笑 的Blog http://blog.csdn.net/pankun/

  大家都知道每个窗口都有默认的窗口函数来进行对窗口消息的处理.
  而子类化技术就是替换窗口的窗口函数为自己定义的函数的技术.例如下面的代码:
var
  Form1: TForm1;
  OldWndProc: Pointer;
implementation

{$R *.dfm}
function NewWndProc(hHwnd, Msg, wParam, lParam: LongWORD): Longint; stdcall;
begin
  if Msg=WM_CLOSE then
    exit;
  Result := CallWindowProc(OldWndProc, hHwnd, Msg, wParam, lParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  {保存旧的窗口函数地址}
  OldWndProc := Pointer(GetWindowLong(Self.Handle, GWL_WNDPROC));
  {设置新的窗口函数为自定义函数}
  SetWindowLong(Self.Handle, GWL_WNDPROC

原创粉丝点击