• ベストアンサー

最前面に無理やりフォームを持っていきたい

フルスクリーンで実行されるオンラインゲームがあります。 そのオンラインゲームの最前面に自作のタイマーを表示させたいのですがうまくいきません。 TopMostを設定して、デスクトップ画面ではうまく行くのですが、オンラインゲームの方をアクティブにすると解像度の変更中に後ろに下がってしまいます。 解像度が変更されてフルスクリーンで実行されるゲーム(DirectX?)に対して最前面にフォームを設定できる方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • tunamelt
  • ベストアンサー率75% (9/12)
回答No.1

恐らくカテゴリが違うと思いますが……。 DirectXの機能でフルスクリーンモード(排他モード)にしているゲームの場合は実現不可能です。 解像度が変わった後に強制的に最前面に表示したとしても、排他モードのゲームは画面に対して直接描画処理を行っているので、他のフォーム等は関係なしに上書き描画されてしまいます(恐らくは、ゲームの描画>フォームの再描画>ゲームの描画……というように点滅表示されてしまうと思います)。 排他モードではないゲーム(解像度だけを変えて、タイトルバー無しのフォームを全画面にしているもの)ならば、ゲームがアクティブになった後に最前面処理を行えば表示できますが、ゲーム内で定期的に自分自身を最前面にするようにしている場合はやはり隠されてしまいます。 どうしてもゲーム上に何かを描画したいのならば、初期化処理をフックして排他モード以外で起動させ、自作のツールの方で解像度を変更してゲーム自体はウィンドウモードで起動させたり、描画処理自体に割り込んで直接描画するというような荒技もあるにはありますが、いずれにしてもオンラインゲームということなのでやらない方が良いと思います(ゲーム側で検知されてアカウント剥奪等の罰則を受けることが殆どです)。

negimagi
質問者

お礼

カテ違いでした。 詳しい解説ありがとうございました。