![]() |
auflistung devices
Hallo,
wie kann ich in Delphi die Auflistung der HDD- Devices + zusätzlichen Laufwerksbuchstaben herausbekommen? Bsp: \Device\Harddisk0\Partition1 C: \Device\Harddisk0\Partition2 D: \Device\Harddisk1\Partition1 F: \Device\Harddisk1\Partition2 G: \Device\Harddisk1\Partition3 H: Gruß |
AW: auflistung devices
Wenn für Dich Englisch kein Problem ist, schau Dir den
![]() |
AW: auflistung devices
englisch wäre nicht das problem, ich bräuchte aber halt nur diesen kleinen teil und nicht so ein riesen programm für sowas.
|
AW: auflistung devices
Zitat:
Delphi-Quellcode:
Vielleicht liefern Dir ja auch die Jedi-Tools eine brauchbaren Ansatz.
objWMIService := GetWMIObject('winmgmts:\\localhost\root\cimv2');
colItems := objWMIService.ExecQuery('Select * From Win32_DiskDrive Where InterfaceType="USB"', 'WQL', 0); oEnum := IUnknown(colItems._NewEnum) as IEnumVariant; for i := 0 to colItems.Count - 1 do if oEnum.Next(1, colItem, iValue) = 0 then |
AW: auflistung devices
Zitat:
Zitat:
|
AW: auflistung devices
das mit dem programm habe ich schon verstanden. Der Quelltext reicht mir aber. Danke!
|
AW: auflistung devices
Zitat:
![]() Ganz ohne Verwendung der WMI. Hier noch einmal zum Mitschreiben:
Code:
z.B Beispiel:
function GetHDDDevicesWithDOSPath:TStringlist;
var i: integer; root: string; device: string; buffer: string; begin setlength(buffer, 1000); result:=TStringlist.create; for i := Ord('c') to Ord('z') do begin root := Char(i) + ':'; if (QueryDosDevice(PChar(root), pchar(buffer), 1000) <> 0) then begin device := pchar(buffer); result.add(format('%s = %s\',[device, root ])); end; end; end;
Code:
procedure TForm1.Button1Click(Sender: TObject);
var slDevices: TStringlist; begin memo1.Clear; try slDevices:=GetHDDDevicesWithDOSPath; if (slDevices<>nil) and (slDevices.count>0) then memo1.lines.Text:=slDevices.Text; finally if assigned(slDevices) then slDevices.Free; end; end; |
AW: auflistung devices
Zitat:
|
AW: auflistung devices
Zitat:
Die hier oben von mir beschriebene Funktion zur ausschließlichen Ermittlung der HDD-Devices benötigt überhaupt keine einzige zusätzliche Unit neben denen, die sowieso für die Erstellung der Form benötigt werden. Sie benötigt also weder explizit noch implizit eine einzige Unit aus dem JEDI-package. Die Funktion ist stand-alone arbeitsfähig. Der in ihr enthaltene, entscheidende Aufruf QueryDosDevice() ist in der Unit Windows enthalten. Es ist also die WMI, die unnötig aufbläst, wenn man denn unbedingt sie zu Hilfe nehmen will. |
AW: auflistung devices
Zitat:
Zitat:
Zitat:
|
AW: auflistung devices
Zitat:
Hier ist aber selektiv aus meinem ganzen "Quell"-Paket allein die zur Erfassung der HDD-Devices erforderliche Funktion herausgenommen - und die braucht eben nichts zusätzliches. Ein kleiner, anhand meines konkret angeführten Beispiels ohne jede Mühe einer eigenen Gedankenleistung durchgeführter Versuch hätte Dir das sofort gezeigt. Obwohl das eigentlich auch schon aus dem Code heraus zu erkennen ist. Zitat:
|
AW: auflistung devices
könnt Ihr das Kriegsbeil begraben?
|
AW: auflistung devices
Zitat:
Für mich stellt WMI halt einen sehr interessanten und vielseitigen Zugriff auf das Windows-System dar. WinApi-Zugriffe sind ein weiterer Weg. Jedi-Units habe aus meiner Erfahrung die unangenehme Eigenschaft, noch unzählige weitere Units nach zu ziehen. Das macht deren Einsatz etwas unübersichtlich. |
AW: auflistung devices
Da kommen leider nicht ganz die richtigen Informationen raus @ASM.
Bei dir kommt \Device\Harddsikvolume1 raus. Ich benötige aber \Device\Harddisk0\Partition0 Vllt. helfen die folgenden Informationen: \\.\Volume{}\ link to \\?\Device\HarddiskVolume1 fixed media Mounted on \\.\c: \\.\Volume{}\ link to \\?\Device\CdRom0 CD-ROM Mounted on \\.\d: \\.\Volume{}\ link to \\?\Device\Floppy0 removeable media Mounted on \\.\a: NT Block Device Objects \\?\Device\CdRom0 \\?\Device\Floppy0 \\?\Device\Harddisk0\Partition0 link to \\?\Device\Harddisk0\DR0 Fixed hard disk media. Block size = 512 \\?\Device\Harddisk0\Partition1 link to \\?\Device\HarddiskVolume1 Virtual devices /dev/zero /dev/random |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz