私たちが起動した任意のアプリケーションのスクリーンショットを撮るC#(WPF)アプリケーションがあります。 アプリケーションは最小化されていても、他のウィンドウの後ろに置かれていても構いませんが、依然として個々のアプリケーションの画像が必要です。C#を使用して任意の外部アプリケーションのスクリーンショットを撮る
ほとんどの場合、BitBltまたはPrintWindowを使用する典型的なP/Invokeソリューションは知っていますが、グラフィックスデバイスに直接描画するDirectXまたはOpenGLアプリケーションを扱うときに失敗します(黒/透明ピクセルのみになります)。私はこれを見つけましたarticleは、C#からDirect3Dアプリのスクリーンショットを撮っているので、私はそのケースをカバーしていると思います。
だから私の質問はこれです:私は、OpenGLアプリケーションのためにこれを行うだろうか
- ?
- (PW/DX/GL)を使用する適切な方法を決定する最も簡単な方法は何ですか?
- これを行う普遍的な方法は1つありますか?
#2の場合、実行可能ファイルによって読み込まれたモジュールを調べ、DirectXまたはOpenGL DLL /アセンブリが読み込まれているかどうかを確認することに専念しましたか?
これはWindows XPでのみ実行する必要があります(クロスプラットフォームではなく、いつでもVista/7には向かない)。
。 OpenGLアプリケーションのバックバッファーを取得し、それらのピクセルのコピーを取得する方法はありますか?再:#3 - それは希望的な考えだが、誰かが道を見つけたかもしれない。頼むように傷つきませんよね? (投票しなければ、つまり) –
これは、バックバッファとコピーを取得するglReadBuffer(GL_Back)とglReadPixelsです。 – mentat