我知道每个人都有很棒的移动或网络类型的工作。好吧,我被困在一些好的旧C ++上。这是什么烦我。
当用户在另一个应用程序中按下“Tile Vertically”菜单(在另一个进程中)时,我希望我的应用程序执行某项操作。 (许多应用程序都有一个菜单“Windows”,下面是一个子菜单“Tile Vertically”)。我假设我需要使用SetWindowsHookEx设置全局钩子。我尝试使用“WH_CALLWNDPROC”执行此操作,并且只能挂钩到“进程中”消息,而不是“进程外”。我也尝试了WH_GETMESSAGE。我尝试捕获WM_SIZE,这也没有结果。 实际上,即使在进程中,WM_SIZE也不能在所有窗口上工作,只能在其中一些窗口上工作。
所以现在有几个问题:
1-什么是正确的钩子类型(WH_CALLWNDPROC或WH_GETMESSAGE或者可能使用的其他钩子类型之一)?
2-如何让它获取进程消息?
3-我可以获得WM_MDITILE的示例钩子代码的任何提示吗?
4-我试过做一个键盘钩子,这有效,为什么这不起作用?
5-我正在使用下面的DllMain代码获得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;
}
任何提示或建议?
由于
答案 0 :(得分:0)
可能你应该尝试WH_MSGFILTER或WH_SYSMSGFILTER? 看起来这些ID专用于监视由于对话框,消息框,菜单或滚动条中的输入事件而生成的消息。
有关详细信息,请参阅以下链接:
http://msdn.microsoft.com/en-us/library/ms644990(v=vs.85).aspx