AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

auflistung devices

Ein Thema von mr.unbekannt · begonnen am 20. Dez 2011 · letzter Beitrag vom 21. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2   
mr.unbekannt

Registriert seit: 20. Jul 2005
Ort: Schwerin
152 Beiträge
 
Delphi 7 Professional
 
#1

auflistung devices

  Alt 20. Dez 2011, 11:53
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ß
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
360 Beiträge
 
Delphi XE2 Architect
 
#2

AW: auflistung devices

  Alt 20. Dez 2011, 12:04
Wenn für Dich Englisch kein Problem ist, schau Dir den Delphi WMI Generator an, der Dir - nicht nur zu diesem Thema - gleich den Source und die Demo liefert.
Andreas
"Complex problems have simple, easy to understand, wrong answers."
  Mit Zitat antworten Zitat
mr.unbekannt

Registriert seit: 20. Jul 2005
Ort: Schwerin
152 Beiträge
 
Delphi 7 Professional
 
#3

AW: auflistung devices

  Alt 20. Dez 2011, 12:06
englisch wäre nicht das problem, ich bräuchte aber halt nur diesen kleinen teil und nicht so ein riesen programm für sowas.
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
360 Beiträge
 
Delphi XE2 Architect
 
#4

AW: auflistung devices

  Alt 20. Dez 2011, 12:26
englisch wäre nicht das problem, ich bräuchte aber halt nur diesen kleinen teil und nicht so ein riesen programm für sowas.
Die Zip-Datei für das installationsfreie Programm ist 3MB groß, soll ich Dir tragen helfen? Oder geht es Dir nur um so etwas:
Delphi-Quellcode:
    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
Vielleicht liefern Dir ja auch die Jedi-Tools eine brauchbaren Ansatz.
Andreas
"Complex problems have simple, easy to understand, wrong answers."
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
1.835 Beiträge
 
Delphi 2009 Professional
 
#5

AW: auflistung devices

  Alt 20. Dez 2011, 12:32
englisch wäre nicht das problem, ich bräuchte aber halt nur diesen kleinen teil und nicht so ein riesen programm für sowas.
Beschreibung WMI Delphi Code Creator:

Zitat:
"Can generate object pascal code"
Das "Riesenprogramm" erzeugt nur den Delphi Quellcode für die gewünschte WMI Operation. Es muss nicht mit in der eigenen Anwendung eingebaut oder mit installiert werden.
Michael Justin
  Mit Zitat antworten Zitat
mr.unbekannt

Registriert seit: 20. Jul 2005
Ort: Schwerin
152 Beiträge
 
Delphi 7 Professional
 
#6

AW: auflistung devices

  Alt 20. Dez 2011, 13:05
das mit dem programm habe ich schon verstanden. Der Quelltext reicht mir aber. Danke!
  Mit Zitat antworten Zitat
ASM

Registriert seit: 15. Aug 2004
163 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: auflistung devices

  Alt 20. Dez 2011, 15:11
wie kann ich in Delphi die Auflistung der HDD- Devices + zusätzlichen Laufwerksbuchstaben herausbekommen?
Das habe ich doch gerade eben erst (vor 13 Stunden) hier beschrieben (siehe dort function ConvertDevicePathToDOSPath()).
Ganz ohne Verwendung der WMI.

Hier noch einmal zum Mitschreiben:
Code:
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;
z.B Beispiel:
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;
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
360 Beiträge
 
Delphi XE2 Architect
 
#8

AW: auflistung devices

  Alt 20. Dez 2011, 15:28
Ganz ohne Verwendung der WMI.
Dafür mit ganz viel Jedi Units. Für den Zugriff auf WMI ist es mit ActiveX, ComObj, Variants getan.
Andreas
"Complex problems have simple, easy to understand, wrong answers."

Geändert von neo4a (20. Dez 2011 um 15:57 Uhr)
  Mit Zitat antworten Zitat
ASM

Registriert seit: 15. Aug 2004
163 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: auflistung devices

  Alt 20. Dez 2011, 16:32
Ganz ohne Verwendung der WMI.
Dafür mit ganz viel Jedi Units. Für den Zugriff auf WMI ist es mit ActiveX, ComObj, Variants getan.
Absoluter Unfug, was den Kommentar zu den angeblich benötigten JEDI-Units betrifft !!!
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.

Geändert von ASM (20. Dez 2011 um 16:34 Uhr) Grund: Schreibfehler-Korrektur
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
360 Beiträge
 
Delphi XE2 Architect
 
#10

AW: auflistung devices

  Alt 20. Dez 2011, 16:42
Absoluter Unfug, was den Kommentar zu den angeblich benötigten JEDI-Units betrifft !!!
Ganz zu schweigen von dem fundamentalen Schwachsinn, einen Satz mit 3(!) Ausrufzeichen zu versehen!

Die Funktion ist stand-alone arbeitsfähig. Der in ihr enthaltene, entscheidende Aufruf QueryDosDevice() ist in der Unit Windows enthalten.
In der angegebenen Quelle waren die Jedi-Units angegeben.

Es ist also die WMI, die unnötig aufbläst
Was bläst WMI auf?
Andreas
"Complex problems have simple, easy to understand, wrong answers."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2014 by Daniel R. Wolf