首页
社区
课程
招聘
[求助]关于钩子,请高手们回答
发表于: 2009-5-8 11:28 3742

[求助]关于钩子,请高手们回答

2009-5-8 11:28
3742
最近研究钩子,想让某个软件点击最小化后自动隐藏。这只是一个测试,下面的部分调试成功,而且能让所有点击最小化按钮的窗口都隐藏,用记事本来做试验,发现能正常隐藏,也能把它正常显示出来。但是...
   有一个含有背景图的软件(本身只有一个最小化按钮,其他按钮灰化,软件启动即最大化显示),点最小化将其通过钩子隐藏后,如果再最大化显示,就出现了窗口客户区不能正常刷新的现象。而且此后再次点击窗口上的最小化按钮,也不能正常将其隐藏掉了,为何?

void _stdcall StartHookXgMinimized()
{
        glhHook = SetWindowsHookEx(WH_CBT, (HOOKPROC)MyHookProc, glhInstance, 0);
        if (NULL == glhHook)
        {
                DWORD k = GetLastError();
                char s[100];
                sprintf(s, "安装钩子不成功,错误号: %u", k);
                MessageBox(NULL, s, "错误!", MB_OK);
        }
}

LRESULT   CALLBACK MyHookProc(int   nCode,   WPARAM   wParam,   LPARAM   lParam)   
{   
        switch(nCode)
        {
        case HCBT_MINMAX:
                if (lParam == SW_MINIMIZE)
                {
                        ShowWindow((HWND)wParam, SW_HIDE);
                        return TRUE;
                }
        }
        return CallNextHookEx(glhHook, nCode, wParam, lParam);   
   
}

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不懂,想学习,关注MARK一下先..期待高人
2009-5-8 11:40
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
3
我想应该是这个软件本身的BUG吧,用QQ游戏大厅来做测试亦正常! QQ游戏大厅也含有背景图片!
  不过变通地采用另一种方法比如开启一个线程,发现此软件最小化了,就立即隐藏它,然后再显示它,这样却是能正常显示。
  我试图通过强行让其刷新的方式,让它的客户区刷新,也不行!而且第一次将其隐藏了以后,再次显示就出现如上所说的现象,神奇之至!
2009-5-8 11:44
0
游客
登录 | 注册 方可回帖
返回
//