小弟在网上找了好多文章,基本也都说明从任务管理器的应用程序栏中是以对程序发出 SendMessage(HWND, WM_CLOSE, 0, 0)的结束程序,而且也用全局 HOOK 成功响应这个事件,但是不知道怎么阻止被关掉,想求一段程序代码,请大侠帮忙。小弟成功 HOOK 到 WM_CLOSE 的源码附上:library wm_msg;uses
  SysUtils,
  Classes,
  u_msg in 'u_msg.pas';{$R *.res}exports
  InstMsg,
  UnInstMsg;begin
end./------------------------------------------------------------------unit u_msg;interfaceuses
  Windows, Messages, Dialogs;var
  hhk: HHOOK;  function InstMsg: Boolean; stdcall; export;
  function UnInstMsg: Boolean; stdcall; export;
  function HookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; export;implementationfunction InstMsg: Boolean; stdcall; export;
begin
  hhk:= SetWindowsHookEx(WH_GETMESSAGE, HookProc, HINSTANCE, 0);
  if hhk <> 0 then Result:= True else Result:= False;
end;function UnInstMsg: Boolean; stdcall; export;
begin
  Result:= UnHookWindowsHookEx(hhk);
end;function HookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; export;
begin
  Result:= CallNextHookEx(hhk, nCode, wParam, lParam);
  case nCode of
    HC_ACTION:
    begin
      if PMsg(lParam)^.message = WM_CLOSE then ShowMessage('获取消息事件');
    end;
  end;
end;end.求怎样阻止 WM_CLOSE 的 Delphi 源码,请大侠帮帮偶。

解决方案 »

  1.   

    自己处理这个消息就可以,但是还是可能会被windows认为无响应而强制关闭,可以使用双线程保护...
      

  2.   

    其实我是想做一个进程保护程序,已经在网上找到相关源码,并且已经在“Windows 任务管理器”的进程栏正常保护了,不过在应用程序栏中不管我怎么做都还是会被任务管理器结束掉,求个绕过 WM_CLOSE 消息或是修改 SendMessage 函数的源码,请大侠帮忙。
      

  3.   

    建议可以去看下API HOOK的资料 
      

  4.   

    我想用 HOOK OpenPorcess 的方法替换 SendMessage 函数,哪位大侠可以指导一二,分不够我再加