能力值:
( LV2,RANK:10 )
|
-
-
2 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
这么简单就不来问了 onshowwindow 重装函数msd上 is about to be hidden or shown
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
WM_SHOWWINDOW是窗口隐藏或显示的时候收到的消息,即便屏蔽了,也于事无补。窗口此时已经隐藏或显示了。
因此,可以捕获这个消息,然后紧接着把窗口显示状态改回来。
注意1:自己改回来的时候也会触发消息,需要一个标识,不然死循环了
注意2:可以直接通过窗口过程捕获消息,如果非要使用钩子,那么应当是WH_CALLWNDPROC或WH_CALLWNDPROCRET,而非WH_GETMESSAGE
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
你的意思是自己再showwindow(wm_show)一次吗?还是说捕获其它其它消息?
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
子类化窗口过程!
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
谢谢的 明天公司看下的
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
问一下,怎么子类化,不是已经有了窗口过程么
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
用的是MFC窗口 这个子类化 应该处理不了吧?
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
查了两天资料了 实在头疼无解 这个问题应该换种问法
如何在自己的窗口里面 干掉其它窗口通过查找窗口获取句柄从而调用的 showwindow(本窗口句柄,sw_hide)
|
能力值:
( 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)
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
经测试SW_SHOWWINDOW里调用ShowWindow无效,用SetWindowLong加上WS_VISIABLE也无效
在用户层几乎没办法防止其他程序获得窗口句柄
猜测可以参考shadow ssdt hook
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
收到这个消息之前窗口已经被关闭了啊
|
|
|