2

レジストリからDirectXバージョンを読みたい。

値バージョンの下のHKLM\Software \ Microsoft\DirectXで値を見つけました。

私の問題:Hey Scripting Guyを参照してください!私のバージョン「4.09.00.0904」は9.0cですが、dxdiagはDirectX11を示しています。

適切なバージョンを見つける方法は?または、レジストリなしでこれを解決する方法はおそらくありますか?

編集:私はWindows 7Professionalx86を使用しています

4

1 に答える 1

5

レジストリから DirectX 9 より上のバージョンを検出することはできません。そこに保存されていないだけです。

バージョン 10 以降では、DXDiag への COM インターフェイスを使用する必要があります。

  1. DXDiagProvider をインスタンス化します (CoCreateInstance( CLSID_DxDiagProvider, ... IID_IDxDiagProvider, ... )
  2. 初期化します (pDxDiagProvider->Initialize)
  3. ルート コンテナーを開きます (pDxDiagProvider->GetRootContainer)。
  4. 子コンテナー DxDiag_SystemInfo を開きます (rootContainer->GetChildContainer(L"DxDiag_SystemInfo", ...)
  5. バリアント (VT_UI4) のプロパティdwDirectXVersionMajordwDirectXVersionMajor(systemInfo->GetProp( ... ))を読み取る
  6. 関連する場合は、VT_BSTR プロパティszDirectXVersionLetterも読み取ります。

不便?とても。一度書いたら、ユーティリティ関数にラップして、決して振り返らないでください。または、一般的な実装の 1 つをコピーして貼り付けます。

于 2012-11-15T14:25:35.873 に答える