delphi 枚举所有电脑磁盘  
官方Delphi 学习QQ群: 682628230(三千人)
频道

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;

推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.06407904624939 seconds