掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ネットゲームをウインドウモード化するには? (ID:54783)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
DirectXに限らず、WindowsAPIをフックする正規の手段はないので、 ddraw.dllのラッパーを作るとか、プログラムのヘッダを書き換えるなど、 多少イリーガルな方法を取るしかありません。 上記窓化ツールにソースがついているので、それを参照してみるとよいかと。 最小化に関しては、おそらく最小化された時に送られる、 WM_NCACTIVATEやWM_SIZEメッセージを見ていると考えられます。 ウィンドウプロシージャをフックして、 これらのメッセージをカットすればいけるかもしれません。 他の方法で検出しているとダメですが… ウィンドウプロシージャのフックはSetWindowLong関数を使います。 大まかな流れはこんな感じです。 WNDPROC pOrgWndProc; LRESULT CALLBACK HookWndProc(HWND, UINT, WPARAM, LPARAM); … pOrgWndProc = (WNDPROC)SetWindowLong(hBomber, GWL_WNDPROC, (LONG)HookWndProc); … LRESULT CALLBACK HookWndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { switch(Msg) case WM_ACTIVATE: case WM_NCACTIVATE: case WM_SIZE: DefWindowProc(hWnd, Msg, wParam, lParam); return false; //さすがに根こそぎカットはまずいかも } return CallWindowProc(pOrgWndProc, hWnd, Msg, wParam, lParam); } 実際にBomberMan Onlineを解析してみたわけではないのでわかりませんが…
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.