![]() |
Laufwerkpfad erkennen, welcher ein USB-Stick ist!
Hallo,
mein Titel ist vielleicht etwas unglücklich ausgedrückt. Ich möchte mit Delphi erkennen welches Laufwerk es ist, das als Wechsellaufwerk durch mein USB-Stick erzeugt wurde. Zweck soll es sein, eine codierte Datei auf diesem Stick zu speichern, die dann ausgelesen wir --> F:/Datei.dat Weiß jemand wie das geht? Gruß Thomas |
Re: Laufwerkpfad erkennen, welcher ein USB-Stick ist!
Delphi-Quellcode:
Mit GetvolumeInformation kannst du noch mehr Infos auslesen.
var
drive : char; for drive := 'D' to 'Z' do begin case GetDriveType(PChar(drive+':\')) of DRIVE_REMOVABLE: ShowMessage('hier isses ! '+drive); end; end; |
Re: Laufwerkpfad erkennen, welcher ein USB-Stick ist!
Danke ich werde es ausprobieren...
Welche weiteren Informationen könnte man denn mit dieser Funktion auslesen? Gruß Thomas |
Re: Laufwerkpfad erkennen, welcher ein USB-Stick ist!
Hallo Plague,
ganz so einfach, wie shmia es schreibt ist es nun doch nicht. Es sei Du willst nur ein Stick anschließen, bei mehreren Klappt es nicht. |
Re: Laufwerkpfad erkennen, welcher ein USB-Stick ist!
Im Prinzip möchte ich nur einen Stick anschließen. Interessant wäre es aber auch wenn man zusätzlich auch eine Digitalkamera anschließt. Die werden ja auch oft als Wechseldatenspeicher angezeigt. Welcher Fehler wird hier auftreten?
Gruß Thomas |
Re: Laufwerkpfad erkennen, welcher ein USB-Stick ist!
Ich beschaeftige mich gerade genau mit diesem Problem.
Dazu muss man das Setup API und das Config Manager API bemuehen. Beide Konversionen erscheinen bald (naechste Woche) auf ![]() Ich werde dann ein Demoprogramm zu diesem Thema beifuegen. |
Re: Laufwerkpfad erkennen, welcher ein USB-Stick ist!
Welcher Wohl?
Die Routine von shmia gibt Dir die Laufwerksbuchstaben aus, also "F:\, H:\" usw. Du weisst aber nicht, ob F:\ jetzt der Stick ist, oder der Speicherchip der Digitalkamera. Am bessten wäre es, wenn Du Dich zur Einführung in die Thematik das hier durchliest: ![]() |
Re: Laufwerkpfad erkennen, welcher ein USB-Stick ist!
Ich habe mich inzwischen auch mit der von "USB Device Lister" benutzten Methode auseinandergesetzt.
Da kann der Rechner Schluckauf bekommen, wenn man das direkt nach einer WM_DEVICECHANGE macht. Meine aktuelle Methode ist die Volumes mit Setup API aufzaehlen und dann mit dem Config Manager API im Baum der Geraete nach oben zu klettern bis man beim Bus-Device ist. Dort kann man dann leicht den Namen des Busses herausbekommen. Die Laufwerksbuchstaben matcht man ueber die Mount Points. |
Re: Laufwerkpfad erkennen, welcher ein USB-Stick ist!
Hallo Robert,
wie geht's, ein besseres Neues Jahr wünsche ich Dir noch! Das mit dem WM_DEVICECHANGE hatte ich auch, habe es Versucht damit zu lösen, dass ein Timer 2-Sek. wartet und dann agiert. Brachte es aber nicht :? Letzt endlich bin ich doch bei der dirkten Action geblieben. Hängt warscheinlich von der Prozessorauslastung ab. Je nachdem was Los ist, dauert es bis man auf WM_CHANGEDEVICE reagieren kann. PS: Ruf mal an. |
Re: Laufwerkpfad erkennen, welcher ein USB-Stick ist!
Ja, das Traversieren ueber die USB Treiber ist problematisch.
Was passieren kann ist das das "surprise removal" fehlerhaft erscheint. Offensichtlich ist ein Geraeteknoten deaktiviert und beim Traversieren wird er faelschlich aktiviert. Das kann einem richtig auf den Sack gehen, da es die einzige Methode ist direkt an den Seriennummernstring eines Geraetes zu kommen. Jetzt loese ich das indem ich einen Registry-Eintrag auswerte. Ruf du mich doch an. Ich stehe im Telefonbuch. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 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