- Win32API質問箱 Build120©2ch.net
345 :デフォルトの名無しさん[sage]:2015/05/13(水) 13:27:42.36 ID:jTT2yS9m - >>343
ログ見る限り、うまく動いてませんね。。 // Dll HWND hookWnd(){return ghookWnd;} LRESULT CALLBACK fix32HookProc(int nCode, WPARAM wParam, LPARAM lParam){ if ( nCode < 0 ) return CallNextHookEx(hHook, nCode, wParam, lParam); CWPSTRUCT* const p = (CWPSTRUCT*)lParam; case WM_ACTIVE: ghookWnd=p->hwnd; SendMessage(gMainWnd,WM_USER,p->wParam,p->lParam); break; ------------------------------- // main LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ switch(message){case WM_USER: switch(LOWORD(wParam)){ case WA_ACTIVE: printf("%p WA_ACTIVE マウスクリック以外の方法でアクティブ化された %p\n",hookWnd(),(HWND)lParam); break; case WA_CLICKACTIVE: printf("%p WA_CLICKACTIVE マウスクリックによってアクティブ化された %p\n",hookWnd(),(HWND)lParam); break; case WA_INACTIVE: printf("%p WA_INACTIVE 非アクティブ化された(新しいハンドル%p)\n",hookWnd(),(HWND)lParam); break; } printf("GetForegroundWindow() %p\n",GetForegroundWindow()); } GetForegroundWindow()の値とhookWnd(),(HWND)lParamの値が一致しないです。 WA_INACTIVEのとき、lParamには適正値が入るのは知ってます。 DLLのグローバルフック上のcase WM_ACTIVE:で、GetForegroundWindow()を呼び出してそれ使ったほうがよい?
|