C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 108 を表示中)
■64314 / )  Re[6]: VC++でDirectXのバージョン取得方法について
□投稿者/ C++初心者 (4回)-(2012/11/23(Fri) 01:06:50)
マルチポストは規約をしっかり読んで、今後しないように致します。
すいませんでした。

一応自己解決しましたので、長文になりますが、手順を記載させて頂きます。
@ITの質問はこちらのリンクを記載して解決済みに致します。

方法は@のDirectXSetupGetVersion でやりました。

1) プロジェクトプロパティーページ - リンカー - 全般 - 出力の登録を[いいえ]に変更
2) コンパイル
  regsvr32.exeが実行されないため、[MSB8011]が発生しなくなりました。
3) ActiveXのinf (セットアップ情報ファイル)に、DSETUP.dll情報を追記
-TestDxVer.inf---------------------------
~省略~
[Add.Code]
TestDxVer.ocx=TestDxVer.ocx
DSETUP.dll=DSETUP.dll ←追記

[TestDxVer.ocx]
file-win32-x86=thiscab
clsid={XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
FileVersion=1,0,0,1
RegisterServer=yes

[DSETUP.dll] ←追記
file-win32-x86=thiscab
-----------------------------------------

4) $(DXSDK_DIR)Redist内にある、DSETUP.dllをCabファイル生成時に
  ocx、infと一緒にCabファイルに圧縮する。

無理やりですが、この方法で動かすことが出来ました。
しかし取得できた値が、レジストリ値と同様で[4.09.00.0904]でした。。。

http://msdn.microsoft.com/ja-jp/library/ee416788(v=vs.85).aspx
WindowsXPではDirectX10は利用出来ないとありましたので、
OS判定をして、XPから前のOSならば、
http://en.wikipedia.org/wiki/DirectX
↑のバージョンと照らし合わせて値を返し、
Vista以降は照らし合わせた結果が、9以下の場合
WindowsVista : 10, WIndows7 : 11, WIndows8 : 11.1
を返す仕様にして対応しました。

正確性に欠け無理やりな対応ですが、この機能だけに時間も避けないのでとりあえずこれで解決にしました。
もっとしっかりとした方法がありましたらお教えください・・・。
ありがとうございました。
解決済み
返信 編集キー/


管理者用

- Child Tree -