delphi获取可用驱动器信息|GetDriveType 函数
获取可用驱动器信息
驱动器分为多种类型,可以使用GetDriveType 函数来查看,该函数的原型如下:
UINT GetDriveType(LPCTSTR lpRootPathName);
该函数有7 种返回值,每个返回值对应的驱动器类型如下。
• 0:不能判断的驱动器类型。
• 1:根目录不存在。
• DRIVE_REMOVABLE:这是一个可移动驱动器。
• DRIVE_FIXED:这是硬盘驱动器。
• DRIVE_REMOTE:这是一个网络驱动器。
• DRIVE_CDROM:这是一个光盘驱动器。
• DRIVE_RAMDISK:这是一个虚拟硬盘。
驱动器的容量可以用GetDiskFreeSpace 函数来获取,该函数的原型如下:
BOOL GetDiskFreeSpace(
LPCTSTR lpRootPathName,
LPDWORD lpSectorsPerCluster,
LPDWORD lpBytesPerSector,
LPDWORD lpNumberOfFreeClusters,
LPDWORD lpTotalNumberOfClusters
);
下面编写一个示例,来获得驱动器的类型与容量。此示例以26 个字母的AscII 码值为序进行循环,以判断它们是不是有效驱动器。如果是,则用Case 语句判断GetDriveType()返回的驱动器类型,并获得该驱动器的容量。
(1)新建一个工程。在窗体中添加一个Memo 组件和一个Button 组件。设置Button 组件的Caption 属性为“获取”。
(2)为“获取”按钮添加代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
C: String;
DType: Integer;
DriveString: String;
driver:pchar;
sec1, byt1, cl1, cl2:longword;
begin
//通过循环依次判断各盘符的类型
for i := 65 to 90 do
begin
C := chr(i)+’:’;
DType := GetDriveType(PChar(C));
case DType of
0: DriveString := C+’ 不能判断的驱动器类型.’;
1: if chr(i)>’C’ then
Exit
else
DriveString := C+’ 根目录不存在.’;
DRIVE_REMOVABLE: DriveString :=
C+’ 这是一个可移动驱动器’;
DRIVE_FIXED: DriveString :=
C+’ 这是硬盘驱动器.’;
DRIVE_REMOTE: DriveString :=
C+’ 这是一个网络驱动器.’;
DRIVE_CDROM: DriveString := C+’ 这是一个光盘驱动器.’;
DRIVE_RAMDISK: DriveString := C+’ 这是一个虚拟硬盘.’;
end;
Memo1.Lines.Add(DriveString);
driver:=pchar(c);//要显示的驱动器名
GetDiskFreeSpace(driver, sec1, byt1, cl1, cl2);
cl1 := cl1*sec1 * byt1;
cl2 := cl2*sec1 * byt1;
Memo1.Lines.add(’该驱动器总共容量’ + Formatfloat(’###,##0’,cl2) + ’字节’);
Memo1.Lines.add(’该驱动器可用容量’ + Formatfloat(’###,##0’,cl1) + ’字节’);
Memo1.Lines.Add(’’);
end;
end;
(3)保存并执行程序,单击“获取”按钮.