我用钩子钩住了所有static控件并把他们子类化,但是退出程序时怎麽恢复他们呀?请看代码
钩子函数:
{
if (code == HC_ACTION)
{
switch (((CWPSTRUCT*) lParam)->message)
{
case WM_CREATE:
BeginSubclassing(((CWPSTRUCT*) lParam)->hwnd);
break;
case WM_NCDESTROY:
// TODO: clear subclass info.
EndSubclassing(((CWPSTRUCT*) lParam)->hwnd);
break;
default:
break;
}
}
}
void BeginSubclassing(HWND wnd)
{
TCHAR strClassName[10];
int Count = 10;
::GetClassName(wnd,strClassName,Count);
if(_tcscmp(strClassName, "Static") == 0)
{
CMyStatic *pStatic=new CMyStatic;
VERIFY(pStatic ->SubclassWindow(wnd));
// ::UnhookWindowsHookEx(g_hWndProcHook);
}
}
void EndSubclassing(HWND wnd)
{
TCHAR strClassName[10];
int Count = 10;
::GetClassName(wnd,strClassName,Count);
if(_tcscmp(strClassName, "Static") == 0)
{
/*CWnd *pStatic=(CWnd*)wnd ;
pStatic->UnsubclassWindow();
delete pStatic;*/ 这块怎麽写??
}
}
{
if (code == HC_ACTION)
{
switch (((CWPSTRUCT*) lParam)->message)
{
case WM_CREATE:
BeginSubclassing(((CWPSTRUCT*) lParam)->hwnd);
break;
case WM_NCDESTROY:
// TODO: clear subclass info.
EndSubclassing(((CWPSTRUCT*) lParam)->hwnd);
break;
default:
break;
}
}
}
void BeginSubclassing(HWND wnd)
{
TCHAR strClassName[10];
int Count = 10;
::GetClassName(wnd,strClassName,Count);
if(_tcscmp(strClassName, "Static") == 0)
{
CMyStatic *pStatic=new CMyStatic;
VERIFY(pStatic ->SubclassWindow(wnd));
// ::UnhookWindowsHookEx(g_hWndProcHook);
}
}
void EndSubclassing(HWND wnd)
{
TCHAR strClassName[10];
int Count = 10;
::GetClassName(wnd,strClassName,Count);
if(_tcscmp(strClassName, "Static") == 0)
{
/*CWnd *pStatic=(CWnd*)wnd ;
pStatic->UnsubclassWindow();
delete pStatic;*/ 这块怎麽写??
}
}
...全文
相关推荐
钩住SSDT以及隐藏进程的代码HideProcessHookMDL
钩住SSDT以及隐藏进程的代码HideProcessHookMDL
rootkit钩住SSDT隐藏进程
rootkit钩住SSDT隐藏进程 rootkit钩住SSDT隐藏进程
学习笔记之钩住驱动程序导入表
这篇文章算是我的学习笔记吧,贴之与菜鸟们一起学习.因为偶也是菜鸟,很多概念性的,技术性的讲得不好还请矫正
VC++ API钩子 附含源代码
用detoured.dll这个dll写的钩注册表相关函数来隐藏键值的东东。 具体怎么实现的 自己看看就明白了 代码可能有不够简洁的地方 我也没改 呵呵看看吧 对有些人来说是好东西
钩子ApiHook教程示例代码.zip
ApiHook教程示例代码.zip


