私は Displayfusion のような小さなツールを作成しています。Windows が move/activate/etc のときにメッセージを受信するためにいくつかのフックが必要ですが、行き詰まっています..
CallWndProc フックにこのプロジェクトを使用しています: http://www.codeproject.com/KB/system/WilsonSystemGlobalHooks.aspx
ほぼすべてのウィンドウ (x86 および x64) で問題なく動作しますが、一部のウィンドウではフック DLL を挿入できないようです。現在、Adobe Reader X に問題があります。そのウィンドウからメッセージが受信されていません。サンドボックスと何か関係があると思いますか?誰かが私に正しい方向へのプッシュを与えることができますか?
フックの初期化コード:
bool InitializeCallWndProcHook(int threadID, HWND destination)
{
if (g_appInstance == NULL)
return false;
if (GetProp(GetDesktopWindow(), "WILSON_HOOK_HWND_CALLWNDPROC") != NULL)
SendNotifyMessage((HWND)GetProp(GetDesktopWindow(), "WILSON_HOOK_HWND_CALLWNDPROC"), RegisterWindowMessage("WILSON_HOOK_CALLWNDPROC_REPLACED"), 0, 0);
SetProp(GetDesktopWindow(), "WILSON_HOOK_HWND_CALLWNDPROC", destination);
hookCallWndProc = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)CallWndProcHookCallback, g_appInstance, threadID);
return hookCallWndProc != NULL;
}