重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

特定のオンラインFPSゲームで、画面が特定の状況になった一瞬のスクリーンショットを自動的に保存するプログラムを作成しています。
現在なんとかBitBltを使って画面を取得して状況の判別と画像の保存を行うプログラムができ、このプログラムであるゲームAでは正常に動作していることが確認できました。
しかし、別のゲームBでは上手く動作せず、確認したところBitBltでの取得が上手くいっていないようでBitBltで取得している画面全体が黒一色(RGB値ですべて0)と成っていることが分かりました。
おそらくゲームBに採用されているゲームガードなどとの競合だと思うのですが、検索エンジンで調べてみたところDxtoryなどのソフトではゲームBのプレイの動画が取れるようなので原理的にはプレイ中の画像を取得することもできるはずです。
DxtoryはDirectXを使用しているゲームに使用が限定されているようなので、おそらくDirextX関連(DirectDrawとかでしょうか?)で画面を読み取る方法があるのだとおもうのですが、具体的には一体どのような関数?を使って画面の取得を行えばいいのでしょうか?

参考になるサイトや使用する関数などをご存知の方、DirectX関連の知識をお持ちのかたはぜひご教授いただけたらと思います。よろしくお願いします。

A 回答 (1件)

dxdiagを使ってOS全体のDirectDrawを無効化するか、ハードウェア オーバーレイ サーフェイスの事前確保を試してみては?



あと、使用OSやターゲットのゲームが使用しているDirectX(Direct3D)のバージョンを明記したほうがいいです。Windows Vista以降では、グラフィックもサウンドもXP以前とはかなり大幅にアーキテクチャが変わっているので、昔OKだった方法が通用しないこともありえます。

http://hp.vector.co.jp/authors/VA033596/ojos/001 …

この回答への補足

いろいろ調べたところ配色の設定で、「Windows Aero」を無効にし「Windows Vista ベーシック」にしたところOLCを使用しなくてもスクリーンショットが取れるようになりました。
アドバイス非常に参考になりました。ありがとうございました。

補足日時:2011/03/08 13:50
    • good
    • 0
この回答へのお礼

回答ありがとうございます

OSはwindows 7,ゲームBは「AVA」で使用しているのはDirectX9.0cです
windows7ではdxdiagからの無効化ができないとのことでしたので、
OCL
http://mosax.sakura.ne.jp/fswiki.cgi?page=Other#p0
というソフトを使用してオーバーレイサーフェスの事前確保を試してみましたが、やはりスクリーンショットは黒一色になってしまいました。

お礼日時:2011/03/08 13:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!