怎么获取本机上所有的硬盘分区的盘符

解决方案 »

  1.   

    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;
      

  2.   

    使用函数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;