Entwickler-Ecke
Windows API - DirectX Ermittel
Kurzer_18 - So 19.08.07 13:36
Titel: DirectX Ermittel
Hallo.... hat von euch jemand eine ahnung.. bzw eine lösung gefunden wie ich Die aktuelle DirectX version ermitteln kann? d.h auch unter Windows Vista (DirectX 10).
Niergends findet man was dazu und da dacht ich mir poste ich es doch einfach mal hier rein :-) währe schon ganz guddi wenn da einer ne idee hat ober vielleicht weis wie des funktioniert.
DANKE!!!!
Kurzer_18 - So 19.08.07 14:32
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| function GetDirectXVersion(var major, minor: word): boolean; var Reg: TRegistry; str: string; res: boolean; DXVersion: record Major: Longword; Minor: Longword; end;
begin str:=''; res:=false; major:=0; minor:=0; Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('\Software\Microsoft\DirectX', False) then begin res:=true; Reg.ReadBinaryData('InstalledVersion', DXVersion, SizeOf(DXVersion)); end; finally Reg.CloseKey; Reg.Free; end;
if res then begin Major:=HiByte(hiWord(DXVersion.Major)); Minor:=HiByte(hiword(DXVersion.Minor)); end;
Result := res; end; |
und wie führe ich dies nun aus? weil er meint immer was mit:
[Fehler] Unit1.pas(64): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
DAMIT ERMITTLE ich auch wieder nur DX9 unter Vista.. es geht ja aber darum das DX10 ausgegeben wird...
sie z.b. CPU-Z unter about.... da steht unten de windows version und die RICHTIGE DX version
Calculon - So 19.08.07 14:39
Zitat: |
und wie führe ich dies nun aus? |
So:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.Button1Click(Sender: TObject); var Major, Minor: Byte; begin GetDirectXVersion(Major, Minor); ShowMessage('Version: ' + IntToStr(major) + '.' + IntToStr(minor)); end; |
[edit]
Zitat: |
DAMIT ERMITTLE ich auch wieder nur DX9 unter Vista.. |
Was ich etwas komisch finde, da die Werte ja aus der Registry gelesen werden. Wieso stehen da falsche oder nicht aktuelle Informationen drin? Wegen Abwärtskompatibilität?
[/edit]
Gruß
Calculon
--
Kurzer_18 - So 19.08.07 14:49
ok danke dir....
aber wie ich bereits erwähnte ermittelt er dabei auhc nur DX9 und nicht ds wirklich DX was bei vista dabei ist .. also KEIN DX 10
Zitat: |
Was ich etwas komisch finde, da die Werte ja aus der Registry gelesen werden. Wieso stehen da falsche oder nicht aktuelle Informationen drin? Wegen Abwärtskompatibilität? |
das ist eine sehr gute frage die werte von DX 10 stehen leider nicht mehr darin weis auch ne warum die müsen irgendwie anders abgefragt werden...und ich habe jetzt inzwischen überall und niegends geschaut aber ich finde nix und wenn ich was finde dann ist es immer das selbe über die registry.. aber Vista (DirectX 10) steht nunmal nicht mehr in der Registry nur sie simpulierte bzw. Abwärtskompatibilität DX9.. aber keine 10 mehr.... aber das ist genau das was ich ja will.
D.h ich bin jeden über vorschläge dankbar.. solange sie sich nicht auf die registry (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectX) beziehen.... denn da steht DEFINITIV nicht drinne...!!!
TGLDX - So 19.08.07 22:14
Man könnte ja prüfen, ob sich in Windows\System32\ die entsprechenden dlls befinden (d3d8/9/10.dll)
Kurzer_18 - Mo 20.08.07 20:18
@TGLDX
Könnte man aber danke DirectX installer installiert er auf Windows XP auch die DX10 files... und das windows XP kein DX10 hat weis und sollte inzwischen jeder wissen... also bringt das auhc nicht gerade Sehr viel...
es muss auch eine andere möglichkeit geben siehe CPU-Z... die haben es korrekt.. aber im falle von delphi scheint es ja nicht zu gehen.. :-(
Kurzer_18 - Mo 20.08.07 23:08
naja wie ich es mir gedacht habe gilt auch nur für DX 9... oder sagen wir mal bis Max DX9... :-8
TGLDX - Mo 20.08.07 23:35
Du hast es scheinbar nicht ausprobiert; man übergibt der Funktion einen String-Parameter, welcher die Version danach im Klartext enthält.
(Ich habe mit Vista als Ergebnis "10.0" erhalten)
Kurzer_18 - Mo 20.08.07 23:54
hmm dann schreieb einfach mal wie du das gemacht hast? damit ich es nachvollziehen kann vielleicht habe ich ja auch einfach nur was falsch gemacht.. kannst es ja gerne posten würde mich sehr freuen wenn es doch funktionieren sollte... also Unit kannst du ruhig posten.. danke dir
TGLDX - Di 21.08.07 00:07
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure ShowDXVersion; var C: Cardinal; dxversion: String; begin GetDXVersion(C,dxversion); Application.MessageBox(PChar(dxversion),'DX-Version'); end; |
Units sind oben verlinkt (einfach in zwei *.pas Dateien kopieren).
Kurzer_18 - Di 21.08.07 00:25
Danke dir.... also teste ich es nochmal... und dann mal schauen.. aber ich glaube das habe ich eh vergessen ;-D aber danke dir trotzdem
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!