var i: Integer; C: String; DType: Integer; DriveString: String; begin ListBox1.Clear; for i := 65 to 90 do begin C := chr(i)+':\'; DType := GetDriveType(PChar(C)); case DType of 0: DriveString := C+' 驱动器类型不确定'; 1: DriveString := C+' 系统目录不存在'; DRIVE_REMOVABLE: DriveString :=C+' 是可移动驱动器'; DRIVE_FIXED: DriveString :=C+' 是固定驱动器'; DRIVE_REMOTE: DriveString :=C+' 是网络驱动器'; DRIVE_CDROM: DriveString := C+' 是CD-ROM驱动器'; DRIVE_RAMDISK: DriveString := C+' 是虚拟驱动器'; end; if not ((DType = 0) or (DType = 1)) then ListBox1.Items.AddObject(DriveString, Pointer(i)); end; end;
使用函数BOOL GetDiskFreeSpace( LPCTSTR lpRootPathName, // address of root path LPDWORD lpSectorsPerCluster, // address of sectors per cluster LPDWORD lpBytesPerSector, // address of bytes per sector LPDWORD lpNumberOfFreeClusters, // address of number of free clusters LPDWORD lpTotalNumberOfClusters // address of total number of clusters );这里有一个例子: function TsysInfo.GetDrive(drive:String):String; Var i:integer; buffer :String; spc, bps, nofc,tnoc:dword; //用于存放磁盘容量的变量 Begin i:=getdrivetype(pchar(drive+':\')); buffer:=' '+drive+': '; case i of DRIVE_UNKNOWN : buffer:=buffer+'未知类型'; DRIVE_REMOVABLE: buffer:=buffer+'软盘'; DRIVE_FIXED : begin buffer:=buffer+'硬盘'; if getdiskfreespace(pchar(drive+':\'),spc,bps,nofc,tnoc) then begin buffer:=buffer+'总容量: '+inttostr((spc*bps*tnoc) div (1024*1024))+'MB'; buffer:=buffer+'剩余: '+inttostr((spc*bps*nofc) div (1024*1024))+'MB'; end; end; DRIVE_REMOTE : buffer:=buffer+'网络驱动器'; DRIVE_CDROM :buffer:=buffer+'CD-ROM驱动器'; DRIVE_RAMDISK:buffer:=buffer+'RAM虚拟驱动器'; end; result := buffer; End;
i: Integer;
C: String;
DType: Integer;
DriveString: String;
begin
ListBox1.Clear;
for i := 65 to 90 do
begin
C := chr(i)+':\';
DType := GetDriveType(PChar(C));
case DType of
0: DriveString := C+' 驱动器类型不确定';
1: DriveString := C+' 系统目录不存在';
DRIVE_REMOVABLE: DriveString :=C+' 是可移动驱动器';
DRIVE_FIXED: DriveString :=C+' 是固定驱动器';
DRIVE_REMOTE: DriveString :=C+' 是网络驱动器';
DRIVE_CDROM: DriveString := C+' 是CD-ROM驱动器';
DRIVE_RAMDISK: DriveString := C+' 是虚拟驱动器';
end;
if not ((DType = 0) or (DType = 1)) then
ListBox1.Items.AddObject(DriveString, Pointer(i));
end;
end;
LPDWORD lpSectorsPerCluster, // address of sectors per cluster
LPDWORD lpBytesPerSector, // address of bytes per sector
LPDWORD lpNumberOfFreeClusters, // address of number of free clusters
LPDWORD lpTotalNumberOfClusters // address of total number of clusters
);这里有一个例子:
function TsysInfo.GetDrive(drive:String):String;
Var
i:integer;
buffer :String;
spc, bps, nofc,tnoc:dword; //用于存放磁盘容量的变量
Begin
i:=getdrivetype(pchar(drive+':\'));
buffer:=' '+drive+': ';
case i of
DRIVE_UNKNOWN : buffer:=buffer+'未知类型';
DRIVE_REMOVABLE: buffer:=buffer+'软盘';
DRIVE_FIXED : begin
buffer:=buffer+'硬盘';
if getdiskfreespace(pchar(drive+':\'),spc,bps,nofc,tnoc) then
begin
buffer:=buffer+'总容量: '+inttostr((spc*bps*tnoc) div (1024*1024))+'MB';
buffer:=buffer+'剩余: '+inttostr((spc*bps*nofc) div (1024*1024))+'MB';
end;
end;
DRIVE_REMOTE : buffer:=buffer+'网络驱动器';
DRIVE_CDROM :buffer:=buffer+'CD-ROM驱动器';
DRIVE_RAMDISK:buffer:=buffer+'RAM虚拟驱动器';
end;
result := buffer;
End;