掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
システムフックしているDLLが終了しない・・・ (ID:71307)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
助けてください! メインのDLL(以下メインDLL)からフックするDLL(以下フックDLL)を呼び出しているのですが、メインDLLの DLL_PROCESS_DETACH 内でUnhookWindowsHookExを実行してメインDLLを終了してもフックDLLが終了しません。。 以下ソースです --------------------------------------------------------------------------------------------- メインDLL BOOL WINAPI DllMain(HINSTANCE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: SetHook() break; case DLL_PROCESS_DETACH: while(HookState()){ FreeHook(); } break; return TRUE; } --------------------------------------------------------------------------------------------- フックDLL #pragma data_seg( "DLL_HOOK" ) HHOOK hHookWnd=0; #pragma data_seg() HINSTANCE hInst; UINT MassageTEST; LRESULT CALLBACK MyCallWndProc(int nCode,WPARAM wParam,LPARAM lParam) { if(((CWPRETSTRUCT *)lParam)->message==対象メッセージ){ //処理 return 0; } return CallNextHookEx( hHookWnd, nCode, wParam, lParam ); } BOOL SetHook(UINT argc,HINSTANCE callprocesshInst) { WndMassageTEST = argc; hHookWnd=SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)MyCallWndProc, hInst, 0); if(hHookWnd==NULL){ return FALSE; }else{ return TRUE; } } void FreeHook(void) { UnhookWindowsHookEx(hHookWnd); hHookWnd = NULL; } BOOL HookState(void) { return (hHookWnd) ? TRUE : FALSE; } BOOL WINAPI DllMain(HINSTANCE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { hInst = hModule; return TRUE; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.