delphi 枚举所有电脑磁盘


本文整理自网络,侵删。

 
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;

相关阅读 >>

Delphi datasanp的控制老大-dsserver

Delphi tms web core直接从html&css设计的页面布局

Delphi 提取字符串中所有数字

Delphi 关于xe10下indy发送字符串编码的问题

Delphi crc32算法

Delphi 10.4中新增功能:新的vcl tedgebrowser组件

Delphi 解析系统环境变量

Delphi clientdataset 与fdmemtable 创建 字段与追加记录

winapi 字符及字符串函数(1): charlower - 字符或字符串转小写

Delphi设置光标在edit右边

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...