Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi über WMI Partitionsnummer einer Partition ermitteln (https://www.delphipraxis.net/77854-ueber-wmi-partitionsnummer-einer-partition-ermitteln.html)

Mazel 25. Sep 2006 20:16


über WMI Partitionsnummer einer Partition ermitteln
 
Hallo,

ich versuche über WMI die Partitinosnummer zu ermitteln. Ich habe 3 Partitionen und nun möchte ich wissen, welchen Index die Partitionen C:\ D:\ oder E:\ haben.

Ich habe mich mit WMI ein wenig beschäftigt, dabei hat mir himitsu gute Hilfestellungen gegeben und auch eine WMI Unit. Das Problem was ich habe ist, dass ich viele Informationen über WMI ermitteln kann aber nur gesamt. Ich kann meine Anfrage nicht auf C:\ oder E:\ spezialliseren, bzw ich weis nicht wie ich es machen soll.

Wenn mir jemand helfen kann, wär schön.

Gruß
Mazel

EWeiss 25. Sep 2006 20:35

Re: über WMI Partitionsnummer einer Partition ermitteln
 
Zitat:

Zitat von Mazel
Hallo,

ich versuche über WMI die Partitinosnummer zu ermitteln. Ich habe 3 Partitionen und nun möchte ich wissen, welchen Index die Partitionen C:\ D:\ oder E:\ haben.

Ich habe mich mit WMI ein wenig beschäftigt, dabei hat mir himitsu gute Hilfestellungen gegeben und auch eine WMI Unit. Das Problem was ich habe ist, dass ich viele Informationen über WMI ermitteln kann aber nur gesamt. Ich kann meine Anfrage nicht auf C:\ oder E:\ spezialliseren, bzw ich weis nicht wie ich es machen soll.

Wenn mir jemand helfen kann, wär schön.

Gruß
Mazel

Das müßte meiner Meinung nach über den index zu erreichen sein.
Aber achtung könnte sein das ältere platten keine Rückgabe für den Index enthalten.
Ist zumindest bei mir der Fall

Du bekommst aber nur die Position.. Also ob Platte: c:\ = 0 Platte: f:\ = 2 usw..

gruß

Mazel 25. Sep 2006 20:50

Re: über WMI Partitionsnummer einer Partition ermitteln
 
Ja, das weis ich, nur wie kann ich das für C:\ oder für F:\ ermitteln? Momentan habe ich eine Schleife die den Index von 0-MaxX (Anzahl der Instanzen) durchläuft, aber leider weis ich nicht wie ich diesen Index einer Partition zuordne. Bei meinen 3 Partition habe ich als ausgabe nur 2 Indizes: 0 und 1 weil 0 meine Hauptpartition ist und 1 die erweiterte wobei darin D:\ und E:\ liegen.

Gruß
Mazel

EWeiss 25. Sep 2006 21:12

Re: über WMI Partitionsnummer einer Partition ermitteln
 
Zitat:

Zitat von Mazel
Ja, das weis ich, nur wie kann ich das für C:\ oder für F:\ ermitteln? Momentan habe ich eine Schleife die den Index von 0-MaxX (Anzahl der Instanzen) durchläuft, aber leider weis ich nicht wie ich diesen Index einer Partition zuordne. Bei meinen 3 Partition habe ich als ausgabe nur 2 Indizes: 0 und 1 weil 0 meine Hauptpartition ist und 1 die erweiterte wobei darin D:\ und E:\ liegen.

Gruß
Mazel

Ahh so ok das geht so...

Lege dir eine Variable zu Beispiel: DevicesNames
Übergebe dieser Variablen den identifikationsstring für Laufwerke wie in der API WMI beschrieben.
Das wäre "Win32_DiskDrive".

Dann mußt du über eine loop Schleife die objecte einlesen.
GetObject('winmgmts:').InstancesOf(DevicesNames)

Als Resultat bekommst du dann alle Laufwerksnamen die sich im System befinden.

Du benötigst weitere zwei Varablen
DeviceSet : SWbemObjectSet
Device : SWbemObject

Die Eigenschaften der Platte holst du über
DeviceSet := GetObject("winmgmts:").InstancesOf('Win32_' + vPath)

wobei vPath der Name des Laufwerks ist den du vorher ermittelt hast.
Nun mußt du das Device.Properties in einer schleife durchlaufen lassen
und die ergebnisse in einen temporären string addieren

diesen mußt du nachher spliten und irgendeinem TreeView oder was auch immer addieren.
Dort pickst du dir dann den Wert heraus den du benötigst.

gruß

PS: Du kannst aber auch nach object.index vergleichen und aus der schleife rausspringen
sobald das Resultat bekannt ist.
Dann mußt du auch nix addieren. Dann allerdings muss es über Arrays ablaufen
Damit die Daten nicht verloren gehen.

EWeiss 25. Sep 2006 21:26

Re: über WMI Partitionsnummer einer Partition ermitteln
 
Habs vergessen.

Es wird nur nach den Realnamen der Platten gescannt für den Index.
Ob dieser nun c:\ oder d:\ zugeordnet wird mußt du extra überprüfen
das geht mit der WMI meines erachtens nicht.

Vielleicht hilft da die Registry würde es damit mal versuchen.
Die Registry nach dem eingescannten Namen durchsuchen dann wirst wohl fündig werden.
Müßte meineserachtens beistehen welche Platte das ist.

gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:55 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