Текущий архив: 2008.03.23;
Скачать: CL | DM;
Вниз
Как в label.caption записать логическое имя установленной флешки? Найти похожие ветки
← →
Mk30 © (2008-02-19 20:42) [0]Добрый вечер уважаемые мастера! у меня такой вопрос - программа детектит момент установки флешки, скажите пожалуйста как в label.caption записать логическое имя установленной флешки?
← →
trubin © (2008-02-19 20:50) [1]А что такое логическое имя установленной флешки
← →
Amoeba © (2008-02-19 23:27) [2]
> как в label.caption записать логическое имя установленной
> флешки
Сперва получи его, а записать и набитому дураку под силу.
← →
Mk30 © (2008-02-20 07:59) [3]
> А что такое логическое имя установленной флешки
при установке флешки Windows присваивает ей соответствующую букву (f:\, g:\ и тд..) эту букву и нужно определить.
сорри за некорректный вопрос. я хотел спросить как получить имя флешки.?
← →
VirEx © (2008-02-20 11:47) [4]как детектит?
сделай проще: лови сообщение WM_DEVICECHANGE - DBT_DEVICEARRIVAL и получай volime
typedef struct _DEV_BROADCAST_HDR {
ULONG dbch_size;
ULONG dbch_devicetype;
ULONG dbch_reserved;
} DEV_BROADCAST_HDR;
typedef DEV_BROADCAST_HDR *PDEV_BROADCAST_HDR;
← →
trubin © (2008-02-20 12:28) [5]Держи. Лучше не просто скопируй, а почитай msdn.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;
const
DBT_DEVICEARRIVAL = $8000;
DBT_DEVICEREMOVECOMPLETE = $8004;
DBTF_MEDIA = $0001;
DBT_DEVTYP_VOLUME = $0002;
type
PDevBroadcastHdr = ^DEV_BROADCAST_HDR;
DEV_BROADCAST_HDR = packed record
dbch_size: DWORD;
dbch_devicetype: DWORD;
dbch_reserved: DWORD;
end;
PDevBroadcastVolume = ^TDevBroadcastVolume;
TDevBroadcastVolume = packed record
dbcv_size: DWORD;
dbcv_devicetype: DWORD;
dbcv_reserved: DWORD;
dbcv_unitmask: DWORD;
dbcv_flags: Word;
end;
TForm1 = class(TForm)
procedure WMDeviceChange(var AMsg: TMessage); message WM_DeviceChange;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetDrive(pDBVol: PDevBroadcastVolume): string;
var
i: Byte;
Mask: DWORD;
begin
Mask := pDBVol^.dbcv_unitmask;
for i := 0 to 25 do
begin
if (Mask and 1) = 1 then
Result := Char(i + Ord("A"));
Mask := Mask shr 1;
end;
end;
procedure TForm1.WMDeviceChange(var AMsg: TMessage);
var
devType: Integer;
data: PDevBroadcastHdr;
Drive: string;
begin
if (AMsg.wParam = DBT_DEVICEARRIVAL) then
begin
data := PDevBroadcastHdr(AMsg.lParam);
devType := data^.dbch_devicetype;
if devType = DBT_DEVTYP_VOLUME then
begin
Drive := GetDrive(PDevBroadcastVolume(AMsg.lParam));
MessageBox(0, PChar("Ins - " + Drive), nil, 0);
end;
end;
if (AMsg.wParam = DBT_DEVICEREMOVECOMPLETE) then
begin
data := PDevBroadcastHdr(AMsg.lParam);
devType := data^.dbch_devicetype;
if devType = DBT_DEVTYP_VOLUME then
begin
Drive := GetDrive(PDevBroadcastVolume(AMsg.lParam));
MessageBox(0, PChar("Rem - " + Drive), nil, 0);
end;
end;
end;
end.
← →
Mk30 © (2008-02-20 17:06) [6]
> trubin © (20.02.08 12:28) [5]
Работает !! Огромное Вам спасибо!!
← →
Мк30 © (2008-02-25 13:55) [7]Пс-пс-пс. Агрых. Лай-ла-ла!!!
← →
Мк30 © (2008-02-25 21:46) [8]Бздынь.Тпрррррррр.
Страницы: 1 вся ветка
Текущий архив: 2008.03.23;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.006 c