Вверх ↑
Разработчик
Ответов: 26066
Рейтинг: 2120
#1: 2011-05-24 12:13:27 ЛС | профиль | цитата
Abolmasov Dmitry писал(а):

- получить все буквы логических дисков с помощью GetLogicalDriveStrings

- получить device path для каждого диска с помощью QueryDosDevice

- заменить device path на букву диска


goluzov, точно так и сделано, как написано, только вместо GetLogicalDriveStrings получаем не текстовую матрицу, а битовую при помощи GetLogicalDrives, те же фаберже, только вид сбоку

procedure GetDeviceList(List: PStrListEx);
var
Root: string;
DeviceName: string;
Drives: DWORD;
len: integer;
begin
Drives := GetLogicalDrives();
Root := 'A:';
while Drives <> 0 do
begin
if (Drives and 1) = 1 then
begin
SetLength(DeviceName, 256);
len := QueryDosDevice(@Root[1], @DeviceName[1], 256);
if len <> 0 then
begin
SetLength(DeviceName, len);
DeviceList.AddObject(Trim(DeviceName), ord(Root[1]));
end;
end;
inc(Root[1]);
Drives:= Drives shr (1);
end;
end;

карма: 22

0