Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi USB Stick erkennen (https://www.delphipraxis.net/17126-usb-stick-erkennen.html)

Jelly 28. Feb 2004 15:25


USB Stick erkennen
 
Hallo zusammen,

wie kann ich erkennen wenn ein USB Stick an einen USB Port angeschlossen rsp. entfernt wird. Sinn der Sache ist, daß ich daraufhin ein Laufwerk sharen will. Diese Freigaben gehen nämlich bei jedem Entfernen verloren und sind beim nächsten Anschließen nicht mehr verfügbar.

Ach ja: OS ist w2k

Gruß,
Tom

silentAMD 1. Mär 2004 20:12

Re: USB Stick erkennen
 
hier ein sourcecode für laufwerkserkennung beim entfernen/anschliessen

Delphi-Quellcode:
procedure TFenster.WMDeviceChange(var Msg: TMessage);
type PDevBroadcastHdr = ^TDevBroadcastHdr;
 TDevBroadcastHdr = packed record
 dbcd_size, dbcd_devicetype, dbcd_reserved: DWORD; end;
type PDevBroadcastVolume = ^TDevBroadcastVolume;
 TDevBroadcastVolume = packed record
 dbcv_size, dbcv_devicetype, dbcv_reserved, dbcv_unitmask: DWORD;
 dbcv_flags: Word; end;
function GetDrive(pDBVol: PDevBroadcastVolume): string;
var i: Byte; Maske: DWORD;
begin
if (pDBVol^.dbcv_flags and $0001) = $0001 then
begin
 Maske := pDBVol^.dbcv_unitmask;
 for i := 0 to 25 do
 begin
  if (Maske and 1) = 1 then
  Result := Char(i + Ord('A')) + ': ';
  Maske := Maske shr 1;
 end;
end;
end;
var Drive: String;
begin
case Msg.wParam of
 $8000:
  if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = $0002 then
   Pan('Datenträger in Laufwerk '+GetDrive(PDevBroadcastVolume(Msg.lParam))+'eingelegt');
 $8004:
  if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = $0002 then
  begin
   Drive := GetDrive(PDevBroadcastVolume(Msg.lParam));
   Pan('Datenträger aus Laufwerk '+Drive+'entfernt');
   if not(Drive = '') and (Drive[1] = ExtractFilePath(ParamStr(0))[1]) then Close;
  end;
 end;
end;
MFG

[edit=Luckie]Delphi-Tags gesetzt. Mfg, Luckie[/edit]

Jelly 1. Mär 2004 21:35

Re: USB Stick erkennen
 
Hey danke, das klappt fast einwandfrei. Krieg nur noch nicht den Unterschied zwischen Netzlaufwerken und physischen Laufwerken hin, ist aber nicht so schlimm.

Gruß,
Tom

The-X 4. Mär 2004 15:59

Re: USB Stick erkennen
 
Zitat:

Zitat von Jelly
Hey danke, das klappt fast einwandfrei. Krieg nur noch nicht den Unterschied zwischen Netzlaufwerken und physischen Laufwerken hin, ist aber nicht so schlimm.

Gruß,
Tom

Dazu sag ich nur GetDriveType :nerd:

CReber 8. Mai 2004 14:36

Re: USB Stick erkennen
 
Mit welchem Ereignis muss man die procedure verknüpfen?

Robert Marquardt 8. Mai 2004 14:43

Re: USB Stick erkennen
 
Also der Name WmDeviceChange sollte ein Hinweis sein: WM_DEVICECHANGE.

J Kadison 12. Nov 2008 15:05

Re: USB Stick erkennen
 
Hey!

Das ganze hört sich echt super an, hab da blos ein problem, und zwar bin absoluter noob :)
naja okay so schlimm auch net, aber ich hab bei dem QT noch ein zwei broblemchen ^^ und zwar:

1. Wie binde ich denn denn in mein Programm ein?
bzw. wie aktiviere ich den (ist das ü-haupt ein Hook) ?"

2. Was ist denn die Funktion/Procedur "Pan()"
bzw. in welcher API ist die denn enthalten?
die wird nämlich bei mir nicht gefunden
Delphi-Quellcode:
[Fehler] Unit1.pas(204): Undefinierter Bezeichner: 'Pan'

Wäre echt super wenn das noch jemand erklären könnte!

Schonmal vielen dank im voraus!

nahpets 12. Nov 2008 15:15

Re: USB Stick erkennen
 
[ot]in Pan.Tau 8) [/ot]

Quatsch, ersetzt es durch ShowMessage und gut ist.

DeddyH 12. Nov 2008 15:27

Re: USB Stick erkennen
 
Das scheint eine selbstgeschriebene Methode zu sein (zumindest kenn ich auch kein Pan). Das gibt aber nur eine Meldung aus, Du kannst es also auch durch z.B. ShowMessage ersetzen.

J Kadison 12. Nov 2008 15:54

Re: USB Stick erkennen
 
Jaja, wer so ne dumme frage stellt, den kann ich auch nur als DAU bezeichnen :wall:

Joa ne, erst lesen, dann fragen stellen :oops:

Dankeschön für die 1. Antwort, aber die andere Frage bleibt ^^

Wie registrier/deregistrier ich denn nun diese Prozedur?
Wäre echt supi, wenn mir das noch jemand ausführlich erklären könnte :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:45 Uhr.
Seite 1 von 4  1 23     Letzte »    

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