Einzelnen Beitrag anzeigen

Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

Re: Anwendung soll eigenes USB-Laufwerk entfernen

  Alt 12. Mär 2009, 07:44
Hallo Matze,

in meinem Programm SystemInfo benutze ich diese Procedure um auf das Verbinden/Trennen eines USB-Laufwerks zu reagieren :
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
//
// Die Daten zu den physikalischen Laufwerken aktualisieren, wenn ein USB
// Gerät angeschlossen oder getrennt wird.
//
procedure TMainForm.WMDeviceChange(var Msg: TMessage);
type
  PDevBroadcastHdr = ^TDevBroadcastHdr;
  TDevBroadcastHdr = packed record
    dbcd_size, dbcd_devicetype, dbcd_reserved: DWORD;
  end;
  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;

begin
  case Msg.wParam of
  $8000:
    if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = $0002 then
    begin
      // ToDo something
    end;
  $8004:
    if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = $0002 then
    begin
      // ToDo something
    end;
  end;
end;
Ich nehme mal an, dass es dafür auch eine Message gibt um ein Laufwerk zu trennen. Vielleicht kannst Du ja damit was anfangen.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat