Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.019 c
2-1204008466
boba
2008-02-26 09:47
2008.03.23
TCriticalSection


2-1203580401
aleyna
2008-02-21 10:53
2008.03.23
паралельно


3-1194190900
mufan
2007-11-04 18:41
2008.03.23
ADO, Query и русский язык!!!


2-1204052315
Эрни
2008-02-26 21:58
2008.03.23
Как найти набор последовательных символов в файле


15-1202563191
Michael5
2008-02-09 16:19
2008.03.23
Переименовал учетную запись на компе, а имя пользовательской папк