Autor |
Beitrag |
Interruptor
      
Beiträge: 26
|
Verfasst: So 29.06.03 21:47
Hallo!
Ich bin dabei ein Programm für meine Firma zu schreiben, welches mir für die Inventur alle Geräte aus meinem PC ausliest. Ich hab soweit eigentlich alles. Nur müsste ich noch die Geräte auslesen können. Also die pci und agp geräte!
Kann mir jemand einen Tip geben wie ich das am besten mache?
über regestry weis ich leider nicht wie und wo ich das suchen muss!!
Gruß
Interruptor 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 29.06.03 21:54
Über die Registry. Da mußt du wohl in den sauren Apfel beißen und mal eine halbe Stunde für die Suche investieren.
|
|
Interruptor 
      
Beiträge: 26
|
Verfasst: Mo 30.06.03 07:10
Hm!
Kann mir dann vieleicht jemand es in soweit erleichtern und mir sagen ob ich es aus der Software oder aus dem Bus auslesen muss!!
Gruß
Interruptor 
|
|
Interruptor 
      
Beiträge: 26
|
Verfasst: Mo 30.06.03 07:17
Also bis jetzt hab ich es nur unter Software gefunden allerdings kann ich doch nicht erwarten das an jedem Computer eine Ati Karte drinen wäre. Der weg währe demnach!!
HKLM\Software\InstalledOptions\Microsoft Corporation\Video\ATI Technologies Inc.\
Gruß
Interruptor
|
|
Interruptor 
      
Beiträge: 26
|
Verfasst: Di 01.07.03 13:39
So nun habe ich den Pfad gefunden!!!
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI
Da sind nun lauter unterordner wie
VEN_1000&DEV_0006&SUBSYS_00000000&REV_02
VEN_1000&DEV_0006&SUBSYS_00000000&REV_03
...
Wie kann ich nun sagen das er die Ordner auslesen soll da ich ja sonst nicht den kompletten Pfad angeben kann?
Gruß
Interruptor 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 01.07.03 13:43
Eine andere Möglichkiet von der ich gehört habe, wäre die SetupAPI:
www.delphi-groups.de...splay;threadid=15582
|
|
Interruptor 
      
Beiträge: 26
|
Verfasst: Di 01.07.03 13:48
Nun da gehe ich doch lieber auf die regestry!!
Was ich nur noch wissen muss ist wie ich ordner auslesen kann also die Bezeichnungen
VEN_1000&DEV_0006&SUBSYS_00000000&REV_02
aus dem Ordner PCI!
Gruß
Interruptor
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 01.07.03 13:50
Kuck mal in der Hilfe unter TRegistry, da steht alles, was du brauchst.
|
|
Interruptor 
      
Beiträge: 26
|
Verfasst: Di 01.07.03 13:53
Hab ich schon da hab ich nichts gefunden und in Google auch nicht!!!
|
|
foxy
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Di 01.07.03 14:09
das glaub ich dir nicht das du da nichts gefunden hast.
da steht, wie man einen schlüssel ausliest, oder einen schreibt 100% auch wenn ich sie jetzt nicht auffem bildschirm habe, weil das gehört zu den grundkenntissen der reg bearbeitung
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
Interruptor 
      
Beiträge: 26
|
Verfasst: Mi 02.07.03 12:19
So ich habe es geschaft!! Unter google hatte ich da nun wirklich nichts zu gefunden aber in der Hilfe habe ich dann etwas länger geforcdet und bin dann letztentlich doch fündig geworden!!
Das ganze ist zwar etwas langwiedriger und komplizierter gewesen als ich es mir gedacht hatte aber es functioniert!!
Was ich jetzt nur noch nicht gefunden habe Ist die Angabe des motherboards!! Ich habe die Regestry durchsucht aber nichts gefunden!! Weis jemand von euch wo man das findet??
Gruß
Ronny
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mi 02.07.03 14:22
Interruptor hat folgendes geschrieben: | So ich habe es geschaft!! Unter google hatte ich da nun wirklich nichts zu gefunden aber in der Hilfe habe ich dann etwas länger geforcdet und bin dann letztentlich doch fündig geworden!! |
Sagst du uns auch wie du es jetzt gelöst hast? Danke!
Gruß
Tino
|
|
Interruptor 
      
Beiträge: 26
|
Verfasst: Mi 02.07.03 14:28
Ich hab die mit dem code gelöst!! Allerdings muss ich dazu sagen das ich das Tool gerade bei meinem kollegen am Rechner getestet habe und es nicht functioniert hat. Anscheinend ist der Weg in der Regestry von Rechner zu Rechner anders. Ich dachte eigentich nur von Betriebssystem zu Betriebssystem aber nun gut. Ich setzte mal dies rein vieleicht weis einer von euch was!!
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: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| function GetHardware: string; var reg: TRegistry; val, val2: Tstringlist; I,Z : Integer; way, anhang : string; begin Form1.memo2.Lines.clear; result:='Unbekannte Geräte'; reg:=TRegistry.Create; way := '\SYSTEM\CurrentControlSet\Enum\PCI'; try val := tstringlist.Create; val2:= tstringlist.Create; reg.RootKey := HKEY_LOCAL_MACHINE; if not Reg.OpenKey(way,False) then ShowMessage('Error opening key') else begin reg.GetkeyNames(val); for I:=0 to Val.Count-1 do begin anhang := ''; anhang := way + '\' + val.Strings[i]; if not reg.OpenKey(anhang,false) then showmessage('Der Weg war wohl falsch wa') else begin reg.GetKeyNames(val2); for Z:=0 to Val2.count-1 do begin anhang := ''; anhang := way + '\' + val.strings[i] + '\' + val2.Strings[z]; if not reg.OpenKey(anhang,false) then showmessage('Da gibt es nichts') else Form1.Memo2.Lines.Add(reg.ReadString('DeviceDesc')) end; end; end; end; finally reg.free; end; end; |
Viel Spaß
Gruß
Interruptor
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 02.07.03 14:36
Du gibst die Stringlisten nicht wieder frei. 
|
|
Interruptor 
      
Beiträge: 26
|
Verfasst: Mi 02.07.03 17:08
Das geht aber auch ohne der Freigabe!!! Aber wieso wieder frei geben??? du meinst aber jetzt schon die TStrings variable var und var2 oder?
Da verstehe ich nicht warum ich da was frei geben soll? das geht so wie es ist nur sagt er mir wenn ich es an einem anderen computer ausprobiere 'Error opening key' Also steigt schon bei der ersten if abfrage aus. Das soll somit heisen, dass der Pfad way = \SYSTEM\CurrentControlSet\Enum\PCI nicht exestiert, was er allerdings tut.
Ich schaue aber mal nach vieleicht finde ich noch den Fehler!!
Gruß
Interruptor
|
|
Interruptor 
      
Beiträge: 26
|
Verfasst: Mi 02.07.03 18:02
Jipi jo ich habe es geschaft!!! War eigentlich ganz simple!!! Er hat ab ab \System\CurrentControlSet\Enum keine rechte mehr und darf deswegen nicht weitermachen. mit reg.openkeyreadonly geben wir ihm das Recht das zu lesen!!!
hier der Code!! Liest den ganzen PCI bus aus!!!!
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: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| function GetHardware: string; var reg: TRegistry; val, val2: Tstringlist; I,Z : Integer; way, anhang : string; begin Form1.memo2.Lines.clear; result:='Unbekannte Geräte'; reg:=TRegistry.Create; way := '\SYSTEM\CurrentControlSet\Enum\PCI'; try val := tstringlist.Create; val2:= tstringlist.Create; reg.RootKey := HKEY_LOCAL_MACHINE; if not Reg.OpenKeyReadOnly(way) then ShowMessage('Error opening key') else begin reg.GetkeyNames(val); for I:=0 to Val.Count-1 do begin anhang := ''; anhang := way + '\' + val.Strings[i]; if not reg.OpenKeyReadonly(anhang) then showmessage('erste *mist*e') else begin reg.GetKeyNames(val2); for Z:=0 to Val2.count-1 do begin anhang := ''; anhang := way + '\' + val.strings[i] + '\' + val2.Strings[z]; if not reg.OpenKeyReadOnly(anhang) then showmessage('*mist*e') else Form1.Memo2.Lines.Add(reg.ReadString('DeviceDesc')); end; end; end; end; finally reg.free; end; end; |
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 02.07.03 18:54
Dann ruf die Prozedur mal ein paar mal hintereinander auf. Wenn du Windows2000 oder XP hast, wirst du bemerken wie dein Programm immer mehr Speicher braucht.
Mit
Delphi-Quelltext 1:
| val1 := TStringList.Create; |
Belegst du speicher, den du aber nicht wieder frei gibst.
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| val1 := TStringlist.Create; try finally val1.Free; end; |
So sieht das richtig aus.
|
|
Interruptor 
      
Beiträge: 26
|
Verfasst: Mi 02.07.03 19:01
Ohh vielen dank da bessere ich das doch gleich noch mit aus!!!
Aber weist du vieleicht noch wo ich die Motherboard spezifikation (Model und Hersteller) auslesen kann?
Dann wäre das Tool nämlich fertig!!!
Gruß
Interruptor 
|
|
Interruptor 
      
Beiträge: 26
|
Verfasst: Do 03.07.03 15:12
Weis den nun niemand wie man den Hersteller und die Bezeichnung vom Motherboard auslesen kann?
Bitte helft mir!!

|
|
wiesel722
Hält's aus hier
Beiträge: 2
|
Verfasst: Mo 28.07.03 09:53
Titel: hardware auslesen
hi interruptor
wen ich deinen code laufen lassen, ist mein memo-feld leer. habe ich was vergessen?
andreas
|
|