![]() |
AW: USB Stick erkennen
Delphi-Quellcode:
type
TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } FUSB: TComponentUSB; procedure DoOnConnect(Sender: TObject); //<- TNotifyEvent procedure DoOnDisconnect(Sender: TObject); //<- TNotifyEvent public { Public-Deklarationen } end; ... procedure TForm1.DoOnConnect(Sender: TObject); begin ShowMessage('Gerät angeschlossen'); end; procedure TForm1.DoOnDisconnect(Sender: TObject); begin ShowMessage('Gerät entfernt'); end; procedure TForm1.FormCreate(Sender: TObject); begin FUSB := TComponentUSB.Create(self); FUSB.OnUSBArrival := DoOnConnect; FUSB.OnUSBRemove := DoOnDisconnect; end; |
AW: USB Stick erkennen
ups.
sorry. jetzt weiß ich auch was ich falsch gemacht habe :oops: ich habe das Sender: TObject vergessen |
AW: USB Stick erkennen
PS:
![]() Zitat:
|
AW: USB Stick erkennen
Hast Du auch selbst vorher nachgeschaut?
Zitat:
|
AW: USB Stick erkennen
mir fällt gerade auf, dass der auf der letzten seite vorgeschlagene source-code (WMDeviceChange) nicht funktioniert.
folgende funktion gibt keinen wert zurück, da
Delphi-Quellcode:
niemals zutrifft:
if (Maske and 1) = 1
Delphi-Quellcode:
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; // GetDrive(PDevBroadcastVolume(Msg.lParam)) |
AW: USB Stick erkennen
Welcher Wert steht denn in Maske?
|
AW: USB Stick erkennen
@Detlev: War auch vorwiegend als Beispiel gedacht. :stupid:
'ne lokale OH gibt's och noch, im Delphi-Quelltext steht es ganz genau und das CodeInsight, bzw. die Autovervollständigung zeichen auch die wichtigen pascalbezogenen Infos. Falls man sich mal die Beschreibung zu DevBroadcastVolume ansieht, dann fällt Folgendes auf. Zitat:
|
AW: USB Stick erkennen
Das sehe ich aber anders.
Zitat:
|
AW: USB Stick erkennen
:oops: Hab bei der Leerzeile aufgehört zu lesen ... wer kann den Ahnen, daß da noch was Wichtiges kommt. :stupid:
|
AW: USB Stick erkennen
Zitat:
Der Fehler liegt im Code
Code:
Der Wert "$0001" ist für den Wechsel eines CD/DVD-Laufwerks gültig.
if (pDBVol^.dbcv_flags and $0001) = $0001 then
Mit USB-Drives (Stick, Harddisk)) aber wird die dann folgende Schleife niemals durchlaufen, also der Laufwerksbuchstabe nicht erkannt. Für USBs muss es vielmehr heißen:
Code:
wobei:
if (pDBVol^.dbcv_flags and DBTF_REMOVE) = DBTF_REMOVE then
Code:
Const
DBTF_REMOVE = $0000; DBTF_MEDIA = $0001; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 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