-
-
[求助]关于钩子,请高手们回答
-
发表于:
2009-5-8 11:28
3744
-
最近研究钩子,想让某个软件点击最小化后自动隐藏。这只是一个测试,下面的部分调试成功,而且能让所有点击最小化按钮的窗口都隐藏,用记事本来做试验,发现能正常隐藏,也能把它正常显示出来。但是...
有一个含有背景图的软件(本身只有一个最小化按钮,其他按钮灰化,软件启动即最大化显示),点最小化将其通过钩子隐藏后,如果再最大化显示,就出现了窗口客户区不能正常刷新的现象。而且此后再次点击窗口上的最小化按钮,也不能正常将其隐藏掉了,为何?
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);
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课