プロジェクトで使用していると言った (spazzarama から) リンクしたコードは、DirectX デバイスのフロント バッファーをキャプチャします。代わりにバック バッファーをキャプチャしようとしましたか? リンクされたサイトのコードから、90 行目を次のように変更します。
device.GetFrontBufferData(0, surface);
に
Surface backbuffer = device.GetBackBuffer(0, 0, BackBufferType.Mono);
SurfaceLoader.Save("Screenshot.bmp", ImageFileFormat.Bmp, backbuffer);
これには、リンクされた例の 96 ~ 98 行目の削除も含まれます。バックバッファは、邪魔になるウィンドウなしで生成される場合があります。
編集
そのすべてを気にしないでください。リンクされたサンプル コードは、ウィンドウ ハンドルを使用して画面の領域を定義していて、実際には DirectX ウィンドウで何もしていないことに気付きました。あなたのサンプル コードは障害物を回避することはできません。これは、領域にアクセスするまでに、その領域の前に別のウィンドウが既に描画されているためです。
アプリケーションを救済するための最善の策は、コードを実行して画像をキャプチャする前に、DirectX ウィンドウを画面の上部に表示することです。Wind32API
BringWindowToTop
関数を使用してそれを行うことができます( http://msdn.microsoft.com/en-us/library/ms632673%28VS.85%29.aspx )。