关于拦截WM_PAINT消息防止桌面刷新!

Byte_code 2008-11-11 03:06:49
我使用的是注入DLL,Hook桌面的WM_PAINT消息,但好像没有效果,下面是DLL的部分代码,请大家帮忙看看,先谢谢了!

LRESULT CALLBACK GetMsgProc( int nCode, WPARAM wParam, LPARAM lParam )
{
if (nCode < 0)
{
return CallNextHookEx (hDesktopHK, nCode, wParam, lParam);
}
else
{
CWPSTRUCT *p = (CWPSTRUCT *)lParam;

if (p)
{
if (p->hwnd == hDeskWnd)
{
if ( p->message == WM_PAINT)
{
p->message = WM_NULL;
return 0;
}
}
}
}
}

extern "C"
__declspec( dllexport ) void SetHook()
{
hDeskWnd = FindWindow( "Progman", NULL );
if( hDeskWnd ) hDeskWnd = FindWindowEx( hDeskWnd, NULL, "SHELLDLL_DefView", NULL );
if( hDeskWnd ) hDeskWnd = FindWindowEx( hDeskWnd, NULL, "Internet Explorer_Server", NULL );

DWORD dwThreadID, dwProcessID;
dwThreadID = GetWindowThreadProcessId(hDeskWnd,&dwProcessID);
hDesktopHK = SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,hDllModule,dwThreadID);
}
...全文
391 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgq2633 2009-02-14
  • 打赏
  • 举报
回复
大哥,不能透露一下是怎么实现的吗?
Byte_code 2008-11-13
  • 打赏
  • 举报
回复
谢谢ls两位。

To zzz822163:
已经试过了。

To terran_ye:
恩,我也觉得可能不是WM_PAINT,我是想禁止桌面刷新。
terran_ye 2008-11-12
  • 打赏
  • 举报
回复
会不会不是WM_PAINT,我以前做个东西,向ListCtrl发WM_PAINT消息,可是桌面没刷新,后来还是用API刷新的
zzz822163 2008-11-12
  • 打赏
  • 举报
回复
桌面窗口的句柄对吗?hDeskWnd =GetDesktopWindow()试试

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧