AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

USB Stick erkennen

Ein Thema von Jelly · begonnen am 28. Feb 2004 · letzter Beitrag vom 10. Apr 2012
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#21

AW: USB Stick erkennen

  Alt 9. Feb 2012, 15:17
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
MiKaEr
(Gast)

n/a Beiträge
 
#22

AW: USB Stick erkennen

  Alt 9. Feb 2012, 15:18
ups.

sorry. jetzt weiß ich auch was ich falsch gemacht habe

ich habe das Sender: TObject vergessen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#23

AW: USB Stick erkennen

  Alt 9. Feb 2012, 15:40
PS: Delphi-Referenz durchsuchenTNotifyEvent

mein einziges problem ist:

wie sieht der aufbau eines solchen TNotifyEvents aus?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#24

AW: USB Stick erkennen

  Alt 9. Feb 2012, 15:43
Hast Du auch selbst vorher nachgeschaut?
Zitat:
Code:
typedef void __fastcall (__closure *TNotifyEvent)(System::TObject* Sender);
Für reine Delphianer nicht sehr informativ
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
MiKaEr
(Gast)

n/a Beiträge
 
#25

AW: USB Stick erkennen

  Alt 9. Feb 2012, 15:45
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 if (Maske and 1) = 1 niemals zutrifft:

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))

Geändert von MiKaEr ( 9. Feb 2012 um 15:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#26

AW: USB Stick erkennen

  Alt 9. Feb 2012, 15:58
Welcher Wert steht denn in Maske?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#27

AW: USB Stick erkennen

  Alt 9. Feb 2012, 17:18
@Detlev: War auch vorwiegend als Beispiel gedacht.
'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:
Gets the bit unit mask of the device. IE (bit 0 = A:, bit 1 = B:, etc..)
Mit der 1 liefert es also nur ein Ergebnis, wenn sich am ersten Laufwerk (also A: ) etwas verändert hat.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#28

AW: USB Stick erkennen

  Alt 9. Feb 2012, 17:29
Das sehe ich aber anders.
Zitat:
Delphi-Quellcode:
for i := 0 to 25 do
begin
  if (Maske and 1) = 1 then Result := Char(i + Ord('A')) + ': ';
  Maske := Maske shr 1;
end;
Die Maske wird 26 mal auf gesetztes Bit geprüft und nach rechts geshiftet.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#29

AW: USB Stick erkennen

  Alt 9. Feb 2012, 19:52
Hab bei der Leerzeile aufgehört zu lesen ... wer kann den Ahnen, daß da noch was Wichtiges kommt.
$2B or not $2B
  Mit Zitat antworten Zitat
ASM

Registriert seit: 16. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#30

AW: USB Stick erkennen

  Alt 10. Feb 2012, 17:33
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 if (Maske and 1) = 1 niemals zutrifft:

Der Fehler liegt im Code
Code:
if (pDBVol^.dbcv_flags and $0001) = $0001 then
Der Wert "$0001" ist für den Wechsel eines CD/DVD-Laufwerks gültig.
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:
 if (pDBVol^.dbcv_flags and DBTF_REMOVE) = DBTF_REMOVE then
wobei:
Code:
Const
  DBTF_REMOVE = $0000;
  DBTF_MEDIA = $0001;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:52 Uhr.
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