Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Laufwerkbuchstabe für ein Gerät rauskriegen? (https://www.delphipraxis.net/57780-laufwerkbuchstabe-fuer-ein-geraet-rauskriegen.html)

Mattze 26. Nov 2005 16:49


Laufwerkbuchstabe für ein Gerät rauskriegen?
 
Hallo,

ich möchte gerne den Laufwerksbuchstaben für ein Gerät wissen. Also nicht für ein Medium (mit Namen oder Seriennummer)!
Bsp.: Natürlich erscheint ein Brenner (oder CD-Rom oder...) auch ohne eingelegtes Medium mit dem (fest) zugeordneten Laufwerksbuchstaben z. Bsp. im Explorer.
Die Zuordnung Buchstabe <--> Gerät dürfte also feststehen.
Ich habe aber nun nur die Gerätebezeichnung. Wie kriege ich den Buchstaben?
Kann jemand helfen? Ich habe überall gesucht. Auch in der Registry. Aber ich finde nix!

Gruß
Matthias

marabu 26. Nov 2005 17:10

Re: Laufwerkbuchstabe für ein Gerät rauskriegen?
 
Hallo Matthias,

speziell für den Brenner gibt es das shell interface ICDBurn mit der Methode GetRecorderDriveLetter. Vielleicht hilft dir das weiter?

Grüße vom marabu

Mattze 26. Nov 2005 20:30

Re: Laufwerkbuchstabe für ein Gerät rauskriegen?
 
Hallo,

(fast) vielen Dank!
Genau sowas suche ich!
Nun bleibt nur die Frage, wo ich das (möglichst als freeware mit Quelltext) herbekomme.

Ich zitiere mal: "Seit XP kennt die Windows-Shell eine Schnittstelle ICDBurn, die für einfache Aufgaben ausreicht. Einziger Wermutstropfen dabei ist, dass diese Schnittstelle sich bisher weder im Delphi-Source findet noch in der API-Übersetzung von Marcel Van Brakel." - Also auch nicht in der win32api von Jedi, oder?

Also bitte, bitte: Woher nehmen?

(Übrigens unter shells.com.ru/nordrhein-westfalen-_7.htm?search=nordrhein%20westfalen&utf8=1&start=4 0 soll es da ein VB-Beispiel geben. Aber das finde ich auch nicht. Außerdem: .ru und dann der Name? Sicherlich mit Vorsicht zu genießen!)

Gruß
Matthias

Robert Marquardt 27. Nov 2005 05:33

Re: Laufwerkbuchstabe für ein Gerät rauskriegen?
 
Schau dir mal in der Jedi-Apilib http://jedi-apilib.sf.net das Modul scapi an.
Das Beispiel SafeRemoval macht genau was du suchst.

Mattze 27. Nov 2005 08:18

Re: Laufwerkbuchstabe für ein Gerät rauskriegen?
 
Hallo,

bei der scapi war ich mal, habe aber nicht weiter geguckt, weil ich dachte, sie im Moment nicht zu brauchen.
Nun habe ich sie mir geladen und wollte SaveRemoval mal compilieren und angucken.
Massenhaft Fehler!!! :( :( :(
Kann nicht kompiliert werden! (Delphi 7 pro)
Momentan sieht es so aus:
- Die jediapilib.inc fehlt.
- TWMDeviceChange kennt er nicht. (Ersetzt durch TMessage - das geht.)
- ModuleLoader hat er nicht.
- PPASSTR, PWSTR, PPSTR kennt er nicht.

Wo kriege ich das Fehlende her?

Aber trotzdem danke für den Tipp. Vielleicht finde ich ja die Lösung für mein Problem im Quelltext.

Gruß
Matthias

Robert Marquardt 27. Nov 2005 14:38

Re: Laufwerkbuchstabe für ein Gerät rauskriegen?
 
Sorry, jediapilib.inc, ModuleLoader.pas etc sind Teil des win32api-Moduls.
Die Pfade fuer die Directory von win32api muss man selbst in die Suchpfade der IDE eintragen, da es keinen Installer gibt.

Mattze 27. Nov 2005 16:29

Re: Laufwerkbuchstabe für ein Gerät rauskriegen?
 
Hallo,

ICDBurn habe ich inzwischen gefunden. Es beweist, dass es möglich ist, vom Gerät auf den Driveletter zu kommen.
Andererseits scheint es da aber keine Möglichkeit für die Vorwahl des Gerätes zu geben.
Es gibt also immer den Driveletter des ersten im System gefundenen Brenners an. Gut, ich habe nur einen, aber richtig toll ist das nicht. Es können ja auch mehrere Brenner im System sein. Außerdem bleibt das Problem auch für andere angeschlossene Wechselmedien. Z. Bsp. CD-Rom. USB-Stick aber nicht! Ich meine wirklich reine Geräte, also ohne Medium und dessen Bezeichnung oder Seriennummer!

Übrigens habe ich in meiner Win32Api-Ausgabe gesucht. (Am 19.11.2005 runtergeladen.) Da ist nix dabei!

Ich suche weiter...

Gruß
Matthias

Robert Marquardt 27. Nov 2005 16:50

Re: Laufwerkbuchstabe für ein Gerät rauskriegen?
 
Lad nochmal runter. Probier auch ueber http://jedi-apilib.sf.net zu gehen.
Das Modul wurde vor kurzem erneuert.

Was SafeRemoval macht ist die Volumes zu enumerieren und dann zu schauen ob es ein USB-Geraet ist.
Ueber das Mountpoint API (ab Win 2000) bekommt man die Devicepfade der Laufwerksbuchstaben, die bis auf ein
abschliessendes Backslash den Geraetepfaden gleichen die man ueber das Setup API bzw das Config Manager API von den Volumes bekommt.
Das Config Manager API wird von Microsoft sorgfaeltig verborgen, da es als Low-Level gilt und nicht mehr fuer Aussenstehende vorgesehen ist.

Mattze 27. Nov 2005 19:30

Re: Laufwerkbuchstabe für ein Gerät rauskriegen?
 
Hallo,

Du hast recht! :) Vielen Dank! :) In der win32api-Version, die ich mir eben runtergeladen habe, ist tatsdächlich alles dabei. Wäre ich nicht drauf gekommen, dass sich das so schnell geändert hat. Ich hatte das am 19.11. ja auch von dieser Adresse. Offenbar bin ich gerade kurz vor der massiven Änderung dahin geraten.
Also vielen Dank! :)
HID-USB und USB im Allgemeinen interessiert mich natürlich auch sehr! Also ist es auf jeden Fall sehr gut!

Morgen geht's weiter...

Gruß
Matthias

Mattze 28. Nov 2005 10:07

Re: Laufwerkbuchstabe für ein Gerät rauskriegen?
 
Hallo,

hmm, also das ist schon was.
Mir fehlen bloß ein paar Help-Dateien, ist mir aufgefallen:
- Was ist die DDK Help und wo kriegt man die her?
- Gibt es zur Jedi-win32api eine Help? (Ich habe da was, aber das ist nicht sehr hilfreich da sehr unvollständig. Die jwaImapi ist z. Bsp. gar nicht dokumentiert und genau die bräuchte ich!
Damit ich unter anderem ohne viel Probieren weiß, wie ich da den Gerätepfad bekomme!)
- Gibt es für das Config Manager API wird von Microsoft auch eine Help? Wo?

Habt Ihr einen Tipp.

Gruß
Matthias


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:45 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz