首页
社区
课程
招聘
[求助]如何屏蔽WM_CLOSE&WM_QUIT
发表于: 2007-6-30 12:54 7049

[求助]如何屏蔽WM_CLOSE&WM_QUIT

2007-6-30 12:54
7049
我不想我的程序被外部程序使用WM_CLOSE和WM_QUIT来关闭掉
有没办法屏蔽掉这2个消息
试了几种方法都不成。。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
    钩子能实现
2007-6-30 13:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
LRESULT   CALLBACK   HookClose(int   code,               //   hook   code   
      WPARAM   wParam,     //   removal   option   
      LPARAM   lParam       //   message   
  )
{
   MSG *msg =(MSG*) lParam;
   WPARAM  wparam=msg->wParam;
   if(wparam==WM_CLOSE)
        MessageBox("Fuck you ");
}
2007-6-30 13:28
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
WM_QUIT好象是防不住的。。。
2007-6-30 14:23
0
雪    币: 200
活跃值: (154)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
.elseif eax == WM_CLOSE || eax == WM_QUIT
ret
2007-6-30 15:29
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
var
  OldProc : Pointer = nil;

function NewProc(hWnd: HWND; Msg: UINT;
  wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  Case Msg of
    WM_QUIT: Exit;
    WM_CLOSE: Exit;
  end;
  Result := CallWindowProc(OldProc, hWnd, Msg, wParam, lParam);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  OldProc := Pointer(GetWindowLong(Handle, GWL_WNDPROC));
  if Assigned(@OldProc) then
  SetWindowLong(Handle, GWL_WNDPROC, Integer(@NewProc));
end;

这个法子可以防WM_CLOSE,但是不能防WM_QUIT
2007-6-30 15:52
0
雪    币: 214
活跃值: (40)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
GetMessage() 遇到WM_QUIT就返回0,所以消息循环要改一下
2007-6-30 17:20
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
咋  改?           
2007-6-30 19:40
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
继续顶一下,WM_QUIT咋屏蔽。。。
2007-7-1 12:43
0
游客
登录 | 注册 方可回帖
返回
//