フルスクリーンの direct3D ゲームの写真を撮りたいです。C# では難しい「オーバーレイ」を作成する必要があることはわかっていますが、printscreen を使用すると (mspaint に貼り付けるより)、ゲーム ウィンドウをキャプチャできることがわかりました。
私はこの不安定なコードで終わった:
try
{
SendKeys.SendWait("{PRTSC}");
Thread.Sleep(100);
if (Clipboard.ContainsImage())
return Clipboard.GetImage();
}
catch (Exception)
{
throw;
}
Bitmap bitmap = new Bitmap(1, 1);
return bitmap;
このコードは機能する場合もあれば、ExternalException をスローする場合もあれば、Clipboard.ContainsImage() が false を返す場合もあり、1,1 サイズの画像を返すだけです。
そのコードを試して改善したいので、何かをクリップボードにコピーするのにかかる時間に頼る必要はありません (thread.sleep(20000) を使用すると動作しますが、このコードは800ms ごとに実行されるより大きなコード)。
したがって、キーをより確実に送信する方法、または printscreen が使用する方法を取得する方法についてのアイデアが必要です。