[ anon68680 @ 07.02.2009. 18:32 ] @
Jel zna neko koji win message i kako treba da presretnem da bih uocio nove medije na PCu, tipa floppy, cd, flash drive? |
[ anon68680 @ 07.02.2009. 18:32 ] @
[ obucina @ 07.02.2009. 21:38 ] @
Ovo sam koristio u jednom komercijalnom programu, radi kao sat.
Detektuje USB disk, u DriveLetter je slovo pod kojim se prijavio u sistem. Definicije tipova su prepisane iz JCL biblioteke. Code: TForm1 = class(TForm) private procedure FOnDeviceChange(var Message: TMessage); message WM_DEVICECHANGE; public end; implementation type _DEV_BROADCAST_HDR = record dbch_size: DWORD; dbch_devicetype: DWORD; dbch_reserved: DWORD; end; {$EXTERNALSYM _DEV_BROADCAST_HDR} DEV_BROADCAST_HDR = _DEV_BROADCAST_HDR; {$EXTERNALSYM DEV_BROADCAST_HDR} PDEV_BROADCAST_HDR = ^DEV_BROADCAST_HDR; {$EXTERNALSYM PDEV_BROADCAST_HDR} TDevBroadcastHdr = DEV_BROADCAST_HDR; PDevBroadcastHdr = PDEV_BROADCAST_HDR; PDEV_BROADCAST_VOLUME = ^DEV_BROADCAST_VOLUME; {$EXTERNALSYM PDEV_BROADCAST_VOLUME} _DEV_BROADCAST_VOLUME = record dbcv_size: DWORD; dbcv_devicetype: DWORD; dbcv_reserved: DWORD; dbcv_unitmask: DWORD; dbcv_flags: WORD; end; {$EXTERNALSYM _DEV_BROADCAST_VOLUME} DEV_BROADCAST_VOLUME = _DEV_BROADCAST_VOLUME; {$EXTERNALSYM DEV_BROADCAST_VOLUME} TDevBroadcastVolume = DEV_BROADCAST_VOLUME; PDevBroadcastVolume = PDEV_BROADCAST_VOLUME; procedure TForm1.FOnDeviceChange(var Message: TMessage); var i: Integer; DriveLetter: Char; begin inherited; if (Message.WParam = $8000) then begin if (DEV_BROADCAST_HDR(Pointer(Message.LParam)^).dbch_devicetype = $00000002) then begin i := 65 + Round(Log2(Extended(DEV_BROADCAST_VOLUME(Pointer(Message.LParam)^).dbcv_unitmask + 0.0))); DriveLetter := Chr(i); // ... end; end; end; [ anon68680 @ 08.02.2009. 15:45 ] @
Zahvaljujem, radi savrseno :)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|