gpt4 book ai didi

c++ - 如果我使用相同的消息和相同的段落,为什么 wparam 会改变?

转载 作者:行者123 更新时间:2023-11-30 19:00:04 25 4
gpt4 key购买 nike

我目前正在尝试实现 http://www.codeproject.com/KB/threads/winspy.aspx 中的一些代码(子类化部分)到我的项目中,但遇到一些问题,我调试了 dll,似乎当我向 Hook 线程的 hwnd 发送完全相同的消息(或者我认为)时,消息似乎有所不同(我看到这要归功于调试dll 文件直接通过 Visual Studio)。

因此,从一开始,我就为所有 dll 实例共享我的自定义 winregistered mssg。这里我写的是我在这两个项目中使用的内容(从上面的网站下载的一个,以及我当前尝试模仿相同策略的一个)

我首先与所有 dll 实例共享稍后将注册的消息(在 dll 进程 atach 中)..

#pragma data_seg("Shared")UINT    WM_HOOKEX = 0;#pragma data_seg()

好的,是时候在 dll 附加时注册它了...

BOOL APIENTRY DllMain( HANDLE hModule,                        DWORD  ul_reason_for_call,                        LPVOID lpReserved                     ){    if( ul_reason_for_call == DLL_PROCESS_ATTACH )     {        g_hInstDll = (HINSTANCE) hModule;           ::DisableThreadLibraryCalls( g_hInstDll );        if( WM_HOOKEX==NULL )            WM_HOOKEX = ::RegisterWindowMessage( _T("WM_HOOKEX_RK") );              }    return TRUE;} 

最后,在我挂接到线程后,我发送消息

hHook = SetWindowsHookEx( WH_CALLWNDPROC,(HOOKPROC)HookProc,                                g_hInstDll, GetWindowThreadProcessId(plist,NULL) );SendMessage( hwnd,WM_HOOKEX,0,1);

现在,由于 VS dll 调试,我可以检查另一端如何接收此消息,在原始“注入(inject)代码的 3 种方法”项目子类化部分的情况下,参数为

wparam = 1lparam = 23720848

在我的项目中

wparam = 0lparam = 23720824

在调试过程中,似乎在具有相同参数的情况下根本无法识别 WM_HOOKEX!

我真的不明白这一点,我用完全相同的名称注册了 dll 进程附加的钩子(Hook),除了我使用 WM_HOOKEX =::RegisterWindowMessage( _T("WM_HOOKEX_RK") );"与 _T 因为我的项目是 unicode 但我真的怀疑这是否重要。

其他一切都 100% 相同

SendMessage(相同的hwnd,相同的mssg,0,1);

有什么想法为什么我的项目中的另一方看不到带有正确段落的正确消息?

谢谢

最佳答案

第一个问题,你为什么要这样做:

hHook = SetWindowsHookEx( WH_CALLWNDPROC,(HOOKPROC)HookProc,
g_hInstDll, GetWindowThreadProcessId(plist,NULL);

重写为

hHook = SetWindowsHookEx( WH_CALLWNDPROC,HookProc,
g_hInstDll, GetWindowThreadProcessId(plist,NULL));

究竟是什么让您想到处理类型不匹配错误的最佳方法就是强制转换它?您需要修复 HookProc,使其实际上是正确的函数类型。

关于c++ - 如果我使用相同的消息和相同的段落,为什么 wparam 会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5036777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com