AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Notification wenn neues Laufwerk verfügbar/entfernt
Thema durchsuchen
Ansicht
Themen-Optionen

Notification wenn neues Laufwerk verfügbar/entfernt

Ein Thema von SleepyMaster · begonnen am 1. Jun 2005 · letzter Beitrag vom 2. Jun 2005
 
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#3

Re: Notification wenn neues Laufwerk verfügbar/entfernt

  Alt 2. Jun 2005, 16:29
ok... thx...

habs so gelöst:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  DBT_DEVICEARRIVAL = $8000;
  DBT_DEVICEREMOVECOMPLETE = $8004;
  DBT_DEVTYP_VOLUME = $00000002;
type
  PDEV_BROADCAST_VOLUME = ^DEV_BROADCAST_VOLUME;
  DEV_BROADCAST_VOLUME = record
    dbcv_size: DWORD;
    dbcv_devicetype: DWORD;
    dbcv_reserved: DWORD;
    dbcv_unitmask: DWORD;
    dbcv_flags: DWORD;
    end;
  PDevBroadcastHdr = ^DEV_BROADCAST_HDR;
  DEV_BROADCAST_HDR = packed record
    dbch_size: DWORD;
    dbch_devicetype: DWORD;
    dbch_reserved: DWORD;
  end;

function BitMaskToChar(BitMask: DWORD): char;
var
  i: integer;
  c: char;
begin
for i := 0 to 25 do
  begin
  if (BitMask and 1) = 1 then
    Result := Char(i + Ord('A'));
  BitMask := BitMask shr 1;
  end;
end;

procedure TForm1.WMDeviceChange(var Msg: TMessage);
begin
  if (Msg.wParam = DBT_DEVICEARRIVAL) or (Msg.wParam = DBT_DEVICEREMOVECOMPLETE) then
    if PDevBroadcastHdr(Msg.LParam).dbch_devicetype = DBT_DEVTYP_VOLUME then
      begin
      if Msg.wParam = DBT_DEVICEARRIVAL then
        Messagebox(0, 'Neues Ding...', pchar(BitMaskToChar(PDEV_BROADCAST_VOLUME(Msg.LParam)^.dbcv_unitmask)+''), 64);
      if Msg.wParam = DBT_DEVICEREMOVECOMPLETE then
        Messagebox(0, 'Ding wech...', pchar(BitMaskToChar(PDEV_BROADCAST_VOLUME(Msg.LParam)^.dbcv_unitmask)+''), 64);
      end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  dbv: DEV_BROADCAST_VOLUME;
begin
  ZeroMemory(@dbv, SizeOf(DEV_BROADCAST_VOLUME));
  dbv.dbcv_size := SizeOf(DEV_BROADCAST_VOLUME);
  dbv.dbcv_devicetype := DBT_DEVTYP_VOLUME;
  dbv.dbcv_reserved := 0;
  dbv.dbcv_unitmask := $FFFFFFFF;
  dbv.dbcv_flags := 0;
  RegisterDeviceNotification(Handle, @dbv, DEVICE_NOTIFY_WINDOW_HANDLE);
end;
Bin mir aber ned ganz sicher ob das alles so richtig uns "sauber" ist... vor allem bei dem FormCreate...
  Mit Zitat antworten Zitat
 


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 10:53 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 by Thomas Breitkreuz