我想更改我们使用的旧旧应用程序的消息处理程序,但不再有源。在我们确实有源的 dll 中,我想拦截窗口消息,然后将它们传递给应用程序。这可能吗?我尝试了一些类似的东西:
WNDPROC lpfnWndProc = NULL;
void GetHandler()
{
HINSTANCE hInstance = GetModuleHandle(NULL);
HWND hWnd = GetActiveWindow();
WCHAR lpClassName[1024];
GetClassName(hWnd,lpClassName,1024);
WNDCLASSEX wc;
GetClassInfoEx(hInstance, lpClassName, &wc);
lpfnWndProc = wc.lpfnWndProc;
wc.lpfnWndProc = NewMessageProc;
RegisterClassEx(&wc);
}
但是 GetActiveWindow 失败,只返回 NULL。有没有更简单的方法来做到这一点。事实上,如果我可以简单地添加另一个消息处理程序,我会很高兴。