![]() |
Notification wenn neues Laufwerk verfügbar/entfernt
Hi ihrs...
Wisst ihr wie ich mein Programm informieren lassen kann, wenn ein neues Laufwerk (E:/F:/G:/...) verfügbar ist oder entfernt wurde?!? Vielen Dank für eure Hilfe |
Re: Notification wenn neues Laufwerk verfügbar/entfernt
Such mal im PSDK nach ner Message... ich glaub die hieß WM_DEVICECHANGE oder ähnlich. Da solltest du fündig werden. Außerdem glaub ich nicht, dass die Suche hier im Board keine Ergebnisse zu Tage fördert...
mfg, mh166 |
Re: Notification wenn neues Laufwerk verfügbar/entfernt
ok... thx...
habs so gelöst:
Delphi-Quellcode:
Bin mir aber ned ganz sicher ob das alles so richtig uns "sauber" ist... vor allem bei dem FormCreate...
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 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