DirectX Version

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Build0815
Beiträge: 4
Registriert: 27.09.2006 16:36

Beitrag von Build0815 »

:mrgreen:



Achja nur so ne Info. Die DirectX Version findet man ja natürlich auch im RegistryKey: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectX" (zumindest unter Win XP) in der Zeichenfolge "Version", findet man da aber leider nur (bei installiertem DX 9.0c) die (interne ?) - Versionsnummer "4.09.00.0904", und in der REG_BINARY nur nen binaric "00 00 00 09 00 00 00 00" was auf etwas wie "DirectX 9.0c (4.09.00.0904)" hindeutet , nur leider steht da nix von nem "9.0c" noch findet sich da überhaupt eine klare Versionsinfo :mrgreen:
Build0815
Beiträge: 4
Registriert: 27.09.2006 16:36

Beitrag von Build0815 »

Also ich hab jetzt versucht eine Lösung OHNE DxDiag.exe zu finden und hab mir für den Code auf die Schnelle die Registry-Lese Funktion die ts-soft in diesem Thread (link) gepostet hat eingebunden. Und so sieht das ganze in PB 4.0 Code aus:

Code: Alles auswählen

;externe registry lese prozedur:
Procedure.s ReadRegKey(OpenKey.l,SubKey.s,ValueName.s) 
  hKey.l=0 
  keyvalue.s=Space(255) 
  datasize.l=255 
  
  If RegOpenKeyEx_(OpenKey,SubKey,0,#KEY_READ,@hKey) 
    keyvalue="Error Opening Key" 
  Else 
    If RegQueryValueEx_(hKey,ValueName,0,0,@keyvalue,@datasize) 
      keyvalue="Error Reading key" 
    Else  
      keyvalue=Left(keyvalue,datasize-1) 
    EndIf 
    RegCloseKey_(hKey) 
  EndIf 
  
  ProcedureReturn keyvalue 
EndProcedure  

Procedure.s GetDirectXVersion()
DxVersionIntern.s  = ReadRegKey(#HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\DirectX", "Version")
DxVersionFinal.s = ""

Select DxVersionIntern

  Case "4.02.0095"
  DxVersionFinal = "1.0"
  
  Case "4.03.00.1096"
  DxVersionFinal = "2.0"
  
  Case "4.04.0068 / 70"
  DxVersionFinal = "3.0"
  
  ;DirectX 4.0 wurde nicht veröffentlicht
  
  Case "4.05.00.0155"
  DxVersionFinal = "5.0"
  
  ;DirectX 5.1 - keine Versionsnummer vorhanden oder selbe wie 5.0
  
  Case "4.05.01.1600"
  DxVersionFinal = "5.2" ; Für Windows 95
  
  Case "4.05.01.1998"
  DxVersionFinal = "5.2" ; Für Windows 98
  
  Case "4.06.00.0318"
  DxVersionFinal = "6.0"
  
  Case "4.06.02.0436"
  DxVersionFinal = "6.1
  
  Case "4.07.00.0700"
  DxVersionFinal = "7.0"
  
  Case "4.07.00.0716"
  DxVersionFinal = "7.0a"
  
  Case "4.07.01.3000"
  DxVersionFinal = "7.1"
  
  Case "4.08.00.0400"
  DxVersionFinal = "8.0a"
  
  Case "4.08.01.0810"
  DxVersionFinal = "8.1"
  
  Case "4.08.01.0881"
  DxVersionFinal = "8.1" ; 4.08.01.0810 & 4.08.01.0881 beide DX 8.1 für WinXP
  
  Case "4.09.0000.0900"
  DxVersionFinal = "9.0"
  
  Case "4.09.0000.0901"
  DxVersionFinal = "9.0a"
  
  Case "4.09.0000.0902"
  DxVersionFinal = "9.0b"
  
  Case "4.09.0000.0904"
  DxVersionFinal = "9.0c"
  
  Default
  DxVersionFinal = "Unbekannte oder Keine DirectX Version vorhanden!"
  
  EndSelect
  
  ProcedureReturn DxVersionFinal
EndProcedure
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

genau zu diesem thema ( alle dxversionen aufzuschreiebn is öde^^) habe ich einen thread bei manfänger, oder glaubt ihr, das man die version da nich herauskriegt?

//edit: mein code:

Code: Alles auswählen

debug JHRegGetBinary(#HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\DirectX\", "InstalledVersion")
(bei 9.0c kommt auch eien nummer mit einer 9 am anfang raus, aber ob das die version oder nur zufall ist, weiß ich nicht)

man brauch natürlcih die JHReg Lib
http://www.purebasic.fr/german/viewtopic.php?t=9315
Antworten