WPF アプリケーションで、切り替え可能なグラフィック (AMD Radeon 7670M + Intel 4000) を備えたラップトップで次の問題に取り組んでいます。
一部のビデオを表示するために使用するD3DImageには、黒いフレームしか表示されません。これは、ディスクリート グラフィックス (AMD) がアプリケーションに対してアクティブな場合 (モードが高パフォーマンスに設定されている場合) にのみ発生します。Intel グラフィックスがアクティブな状態 (モードが省電力に設定されている) で動作します。この問題は私たちだけではないようです。Google で検索すると、AMD フォーラムで次の投稿が見つかりました。
D3DImage.CopyBackBufferを使用して回避策を見つけました- バックバッファに実際に正しいフレームが含まれているように見えるので、代わりにそれを表示しようとします。
しかし、必要な場合にのみこの回避策を適用するために、この質問の主題に行き着きます: システムに実際に切り替え可能なグラフィックスがあるかどうかを確認するにはどうすればよいですか?
WMI を使用したり、レジストリを調べたりする方法がいくつかあると思いますが、誰かが私を正しい方向に向けたり、その方法の例を示してくれたりすると、とてもうれしいです。
アップデート:
EnumDisplayDevices と System.Management.ManagementObjectSearcher を試しました。最初のものはすべてのデバイスを返しませんが、後者は返します。しかし、おそらくもっと良い方法がまだありますか?