leocamilla 发表于 2018-4-11 13:11:25

用WH_CALLWNDPROC钩子监视SendMessage消息的传递

本帖最后由 leocamilla 于 2018-4-11 13:15 编辑

图上是我根据论坛大神指点写的demo,发现钩子句柄取不到 g_hHook=0 ,不知是哪里错了,求指点@2402436533   系统是win7 64位

2402436533 发表于 2018-4-11 13:11:26

本帖最后由 2402436533 于 2018-4-11 14:00 编辑

BOOL CHookToMainThread::Hook()
{
      m_hGameWnd = GetHwnd();
      if(!m_hGameWnd)
                return FALSE;

      auto thread = GetWindowThreadProcessId(m_hGameWnd, NULL);
      m_hHook = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, NULL, thread);

      if(!m_hHook)
                return FALSE;

      return TRUE;
}
估计你线程ID未填写,填你发送消息的那个线程 ,一般来说填GetCurrentThreadId(),另外callwndproc里面筛选自定义消息
Ps:另外我不是大神,在这个众牛齐聚的论坛里感觉我是最菜的。

xie83544109 发表于 2018-4-11 13:46:18

{:sweat:}
兄弟,易语言支持 X64 ?

leocamilla 发表于 2018-4-11 15:34:36

@2402436533 非常感谢你的demo,获取不到钩子句柄的原因我测试了下,改为dll注入是正常的,不过又发现个问题,CWPSTRUCT这个结构体的第三个参数wParam对应的应该是SendMessage这个命令的第4个参数对吧?这个参数一直获取到0是什么情况呢

2402436533 发表于 2018-4-11 16:44:02

CWPSTRUCT::wParam 一般对于着消息类型 SendMessage的第三个参数 lParam同理。
页: [1]
查看完整版本: 用WH_CALLWNDPROC钩子监视SendMessage消息的传递