首页
社区
课程
招聘
[求助]怎么屏蔽掉其它窗口发送的wm_showwindow(wm_hide)消息
发表于: 2015-3-2 18:03 9242

[求助]怎么屏蔽掉其它窗口发送的wm_showwindow(wm_hide)消息

2015-3-2 18:03
9242
rt
目前的做法钩子了WM_SHOWWINDOW消息
但是怎么过滤掉这个消息呢 使窗口不隐藏呢?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 1042
活跃值: (470)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
重载啊
2015-3-2 18:08
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这么简单就不来问了 onshowwindow 重装函数msd上 is about to be hidden or shown
2015-3-2 18:49
0
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
WM_SHOWWINDOW是窗口隐藏或显示的时候收到的消息,即便屏蔽了,也于事无补。窗口此时已经隐藏或显示了。

因此,可以捕获这个消息,然后紧接着把窗口显示状态改回来。

注意1:自己改回来的时候也会触发消息,需要一个标识,不然死循环了

注意2:可以直接通过窗口过程捕获消息,如果非要使用钩子,那么应当是WH_CALLWNDPROC或WH_CALLWNDPROCRET,而非WH_GETMESSAGE
2015-3-2 19:33
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你的意思是自己再showwindow(wm_show)一次吗?还是说捕获其它其它消息?
2015-3-2 19:42
0
雪    币: 175
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
子类化窗口过程!
2015-3-2 20:32
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢的 明天公司看下的
2015-3-2 20:59
0
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
问一下,怎么子类化,不是已经有了窗口过程么
2015-3-3 09:05
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
用的是MFC窗口 这个子类化 应该处理不了吧?
2015-3-3 09:11
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
查了两天资料了 实在头疼无解 这个问题应该换种问法
如何在自己的窗口里面 干掉其它窗口通过查找窗口获取句柄从而调用的 showwindow(本窗口句柄,sw_hide)
2015-3-3 10:31
0
雪    币: 175
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
SetWindowLong(窗口句柄, GWL_WNDPROC, 新窗口过程地址)

LRESULT CALLBACK WindowProc(          HWND hwnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);
判断uMsg是不是WM_SHOWWINDOW,如果是,再判断一个标志位bIsFromSelf(你自己在调用ShowWindow类似的函数前置bIsFromSelf为True,新窗口过程里再置为False)
2015-3-3 11:55
0
雪    币: 261
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
经测试SW_SHOWWINDOW里调用ShowWindow无效,用SetWindowLong加上WS_VISIABLE也无效

在用户层几乎没办法防止其他程序获得窗口句柄
猜测可以参考shadow ssdt hook
2015-3-3 12:29
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
收到这个消息之前窗口已经被关闭了啊
2015-3-3 12:50
0
游客
登录 | 注册 方可回帖
返回
//