提个HOOK问题,关于SetWindowsHookEx失败的原因!

ChocoboY 2004-10-13 05:25:41
//ScrollHook.h

// 此类是从 ScrollHook.dll 导出的
class SCROLLHOOK_API CScrollHook {
public:
CScrollHook(void);
~CScrollHook(void);
// TODO: 在此添加您的方法。
BOOL StartHook(HWND hwnd);
BOOL StopHook();
friend LRESULT WINAPI MsgProc(int nCode, WPARAM wParam, LPARAM lParam);
};

//ScrollHook.cpp

CScrollHook::CScrollHook()
{
g_iRef++;
return;
}

CScrollHook::~CScrollHook()
{
g_iRef--;
StopHook();
}

BOOL CScrollHook::StartHook(HWND hwnd)
{
if (!g_ScrollHook)
g_ScrollHook = SetWindowsHookEx(WH_MSGFILTER, MsgProc, g_hInstance, 0, NULL));
//DWORD e = GetLastError();
if (!g_ScrollHook) {

return FALSE;
}
g_hWndHook = hwnd;
return TRUE;
}

BOOL CScrollHook::StopHook()
{
BOOL bResult = FALSE;
if ((g_iRef == 0) && g_ScrollHook)
{
bResult = UnhookWindowsHookEx(g_ScrollHook);
if (bResult)
{
g_hWndHook = NULL;
g_ScrollHook = NULL;
}
}
return bResult;
}


当运行UnhookWindowsHookEx后, 再次SetWindowsHookEx就失败了(返回的HHOOK为0),GetLastError返回的是0,
不理解ing
...全文
192 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChocoboY 2004-10-14
  • 打赏
  • 举报
回复
UnhookWindowsHookEx(g_ScrollHook);返回真值了。会没卸载完全么?而且我测试了下,HOOK效果也消失了
Mr-Chen 2004-10-14
  • 打赏
  • 举报
回复
确保你的UnhookWindowsHookEx卸载掉了
dropingleaf 2004-10-13
  • 打赏
  • 举报
回复
一看到代码就头晕
kugou123 2004-10-13
  • 打赏
  • 举报
回复
可能第一次的钩子没有完全卸栽,然后再次安装,就有可能出错。

15,471

社区成员

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

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