Seite 2 von 2
Verfasst: 28.09.2006 18:11
von Build0815
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

Verfasst: 28.09.2006 21:10
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
Verfasst: 28.09.2006 21:59
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