Seite 1 von 1
DirectX Version ohne Registry herausfinden??
Verfasst: 10.10.2004 13:18
von nco2k
hi folks,
wie findet man eigentlich die installierte directx version heraus, ohne die registry abrufen zu müssen?? gibt es da eine totsichere methode?!
vielen dank im vorraus!
c ya,
nco2k
Verfasst: 10.10.2004 15:45
von Zaphod
mit dxdiag.exe, das landet bei der instalation im system32 ordner.
mit dxdiag.exe /h kannst du dir die parameter ansehen, die nötig sind um die ausgabe in eine datei umzulenken.
Verfasst: 10.10.2004 17:24
von nco2k
ich dachte eher an ewas winapi mässiges. hat jemand eine idee??
trotzdem danke.
c ya,
nco2k
Verfasst: 10.10.2004 17:49
von Andre
Eigentlich sollte die Version von DirectX doch auch aus den entsprechenden DLLs zu ermitteln sein. Dafür könnte dann folgender Code nützlich sein:
Code: Alles auswählen
; English forum: http://purebasic.myforums.net/viewtopic.php?t=10723&highlight=
; Author. MrCoder
; Date: 03. May 2004
; Get the version of a Windows DLL.
; Made by Chris Way (03/05/2004)
; More informations here:
; http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/structures/dllversioninfo.asp
; Works if the DLL contains a function called "DllGetVersion", like all/most of the MS ones...
Structure DllVersionInfo
cbSize.l
dwMajorVersion.l
dwMinorVersion.l
dwBuildNumber.l
dwPlatformID.l
EndStructure
dll.DllVersionInfo\cbSize = SizeOf(DllVersionInfo)
OpenLibrary(0,"Shell32.dll") ; The DLL to get the version of
CallFunction(0,"DllGetVersion",@dll)
OpenConsole()
PrintN(Str(dll\dwMajorVersion))
PrintN(Str(dll\dwMinorVersion))
PrintN(Str(dll\dwBuildNumber))
PrintN(Str(dll\dwPlatformID))
Input()
CloseConsole()
Musst jetzt "bloß" noch die richtige(n) zu prüfende(n) DLL herausfinden...

Verfasst: 10.10.2004 20:50
von Falko
Dies müßte die Funktion sein, die du suchst.
INT DirectXSetupGetVersion( DWORD *pdwVersion,
DWORD *pdwRevision
);
Ein Beispiel in C sieht dann so aus.
Code: Alles auswählen
DWORD dwVersion;
DWORD dwRevision;
if (DirectXSetupGetVersion(&dwVersion, &dwRevision))
{
printf("DirectX version is %d.%d.%d.%d\n",
HIWORD(dwVersion), LOWORD(dwVersion),
HIWORD(dwRevision), LOWORD(dwRevision));
}
Hab zwar versucht, das in PB zu machen, aber da bekomme ich schlichtweg einen Linkerfehler angezeigt. Wenn du es hinkriegst, würde ich mich freuen, wenn du ein Beispiel mit Direktx posten könntest.
MfG Falko