【发布时间】:2011-03-25 14:03:09
【问题描述】:
我知道每个人都热衷于出色的移动或网络类型的工作。好吧,我被困在一些好的旧 C++ 上。这就是困扰我的问题。
当用户在另一个应用程序(在另一个进程中)按下菜单“垂直平铺”时,我希望我的应用程序做某事。 (许多应用程序都有一个菜单“Windows”,下面是一个子菜单“Tile Vertically”)。我假设我需要使用 SetWindowsHookEx 设置一个全局挂钩。我尝试使用“WH_CALLWNDPROC”来执行此操作,并且只能连接到“进程中”消息,而不是“进程外”。我也试过 WH_GETMESSAGE。我尝试捕获 WM_SIZE,但也没有超出进程。 事实上,即使在进程中,WM_SIZE 也不能在所有窗口上工作,只在其中一些上工作。
所以现在有几个问题:
1- 什么是正确的钩子类型(WH_CALLWNDPROC 或 WH_GETMESSAGE 或可能使用的其他钩子类型之一)?
2- 如何让它从进程中提取消息?
3- 有什么提示可以获取 WM_MDITILE 的示例挂钩代码吗?
4- 我尝试做一个键盘钩子,但效果很好,为什么这不起作用?
5- 我正在使用带有以下 DllMain 代码的 win 32 dll。有什么问题吗?
HINSTANCE hinst;
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
//
// Capture the application instance of this module to pass to
// hook initialization.
//
if (hinst == NULL)
{
hinst = hModule;
}
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
有什么提示或建议吗?
谢谢
【问题讨论】: