procedure TForm1.FormCreate(Sender: TObject);
var
res: TResourceStream;
driveList: array [1..64] of Char;
drive: string;
driveName: array [0..127] of Char;
rev1, rev2: Cardinal;
driveLen: Cardinal;
driveType: Cardinal;
start, stop: Integer;
const
defDriveName: string = '可移动磁盘';
begin
//
{
GetDriveType(路径) 判断一个磁盘驱动器的类型 返回一个整数
0 驱动器类型不确定
1 系统目录不存在
2 DRIVE_REMOVABLE 是可移动驱动器
3 DRIVE_FIXED 是固定驱动器
4 DRIVE_REMOTE 是网络驱动器
5 DRIVE_CDROM 是CD-ROM驱动器
6 DRIVE_RAMDISK 是虚拟驱动器
}
driveLen := GetLogicalDriveStrings(SizeOf(driveList), @driveList);
start := 1;
for stop := 1 to driveLen do
begin
if driveList[stop] = #0 then
begin
drive := Copy(driveList, start, stop - start);
driveType := GetDriveType(PWideChar(drive));
GetVolumeInformation(PWideChar(drive), @driveName, SizeOf(driveName), nil, rev1, rev2, nil, 0);
if Length(string(driveName)) = 0 then
begin
ZeroMemory(@driveName, SizeOf(driveName));
CopyMemory(@driveName, PWideChar(defDriveName), Length(defDriveName) * SizeOf(Char));
end;
if driveType = DRIVE_FIXED then
begin
ComboBox_Drive.AddItem(Format('%s', [drive]),
TStringBuilder.Create(drive));
end;
start := stop + 1;
end;
end;
ComboBox_Drive.ItemIndex := 0;
end;