DirectX Version ohne Registry herausfinden??

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

DirectX Version ohne Registry herausfinden??

Beitrag 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
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag 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.
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

ich dachte eher an ewas winapi mässiges. hat jemand eine idee??

trotzdem danke.

c ya,
nco2k
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1755
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag 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... :wink:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag 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
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Antworten