掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ネットゲームをウインドウモード化するには? (ID:54786)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
確認してみましたが、一度しか実行していませんでした。 色々実験した結果、CallWindowProcで本来のプロージャに処理を返す記述を すると、何事もなかったように終了してしまいます。 逆に、サブクラス化したプロージャのreturn CallWindowProcの箇所を return TRUEやFALSEにすると、起動はできるのですが、やはりフルスクリーン状態のまま固まってしまいます。 また、WH_KEYBOARDに設定し、F2キーにBomberMan Onlineのウインドウハンドル取得と、サブクラス化実行処理を割り当てて、その時のみサブクラス化してみても、何事もなかったように強制終了してしまいました。 一応間違っている可能性もあるので、自分が書いたコードを抜粋します。 // BomberManOnline自体のWM_CREATEにフックした際の処理 static HWND hBomber; // グローバル WNDPROC BomWndProc; // グローバル hHook = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)HookProc, hInst, NULL); LRESULT CALLBACK HookProc(int nCode, WPARAM wp, LPARAM lp) CWPSTRUCT *cwp = (CWPSTRUCT*)lp; // message=BomberManOnlineのWM_XXXXXに対するフック switch(cwp->message) case WM_CREATE: hBomber = FindWindow(NULL, "Online BomberMan"); // タイトルは確認済み if(hBomber) BomWndProc = (WNDPROC)SetWindowLong(hBomber, GWL_WNDPROC, (LONG)BomSubClassProc); break; default: return CallNextHookEx(hHook, nCode, wp, lp); return CallNextHookEx(hHook, nCode, wp, lp); LRESULT CALLBACK BomSubClassProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) switch(msg) case WM_SIZE: case WM_ACTIVATE: case WM_NCACTIVATE: DefWindowProc(hWnd, msg, wp, lp); return FALSE; return CallWindowProc(BomWndProc, hWnd, msg, wp, lp); // F2キーにBomberManOnlineのウインドウハンドル取得とサブクラス化を割り当てた場合 hHook = SetWindowsHookEx(WH_KEYBOARD, ....... LRESULT CALLBACK HookProc(.... if(wp==VK_F2) hBomber = FindWindow(NULL, "Online BomberMan"); if(hBomber) // ウインドウが存在するならサブクラス化実行 BomWndProc = (WNDPROC)SetWindowLong(hBomber, GWL_WNDPROC, (LONG)BomSubClassProc); else return CallNextHookEx(...... return CallNextHookEx(.............. このようになりました。 もしかしたら、BomberManOnlineのプロージャの処理を変更すると強制終了とかいう関数やフラグが存在するのかもしれません。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.