各位大侠,在本机通过GetDiskFreeSpace可以获得本机磁盘容量,
但如何使用GetDiskFreeSpace来得到局域网内某一台机器的磁盘容量?
是否要对lpRootPathName进行修改啊
怎么修改?(假如你已经知道了IP地址了)

解决方案 »

  1.   

    应该用GetDiskFreeSpaceex获得大磁盘容量
    参考
    http://asp3.6to23.com/tgoodnet/xtmblw/IT/VB.htm
      

  2.   

    Sub ShowSpaceInfo(drvpath)
        Dim fs, d, s
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))
        s = "Drive " & d.DriveLetter & ":"
        s = s & vbCrLf
        s = s & "Total Size: " & FormatNumber(d.TotalSize / 1024, 0) & " Kbytes"
        s = s & vbCrLf
        s = s & "Available: " & FormatNumber(d.AvailableSpace / 1024, 0) & " Kbytes"
        MsgBox s
    End Sub
      

  3.   

    Option Explicit'   API声明
    Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As LongPrivate Sub Form_Load()
        GetDriveInfo
    End Sub'   选中一个驱动器时
    Private Sub drvSelect_Change()
        GetDriveInfo
    End Sub'   获取磁盘剩余空间信息并显示在相应的标签中
    Private Function GetDriveInfo()
    Dim sDrive As String
    Dim lBytes As Long
    Dim lMBFree As Double
    Dim lMBTotal As Double
    Dim lSecPerClust As Long    '   扇区每簇
    Dim lBytePerSect As Long    '   字节每扇区
    Dim lNumFreeClust As Long   '   空白簇的数目
    Dim lTotalNumClust As Long  '   簇的总数
        
        '   获取盘符
        sDrive = Left$(DrvSelect.Drive, 1)
        sDrive = sDrive & ":\"
        '   调用API函数返回剩余空间
        lBytes = GetDiskFreeSpace(sDrive, lSecPerClust, lBytePerSect, lNumFreeClust, lTotalNumClust)
        '   转换以兆为单位
        lMBFree = ((lSecPerClust * lNumFreeClust) / 1024) * lBytePerSect / 1024
        lMBTotal = ((lSecPerClust * lTotalNumClust) / 1024) * lBytePerSect / 1024
        '   显示信息
        lblSecPerClust.Caption = lSecPerClust & " Sectors/Cluster"
        lblBytePerSect.Caption = lBytePerSect & " Bytes/Sector"
        lblNumFreeClust.Caption = lNumFreeClust & " Free Clusters"
        lblTotalNumClust.Caption = lTotalNumClust & " Total Clusters"
        lblTotalSpace.Caption = lMBTotal & " MB Total Space"
        lblSpaceFree.Caption = lMBFree & " MB Free on Drive " & DrvSelect.Drive
    End Function
      

  4.   

    但如何使用GetDiskFreeSpace来得到局域网内某一台机器的磁盘容量?
    是否要对lpRootPathName进行修改啊
    怎么修改?(假如你已经知道了IP地址了)将机器的硬盘共享即可
    知道ip好像不行
      

  5.   

    各位,我想知道怎么给sdrive赋值啊,如果赋值为“c:\”,那是在访问本机的c盘剩余空间啊,如果要获得局域网中其它机器的c盘剩余空间,又该怎么做啊?顺便说一下,机器硬盘已经共享了。
    麻烦大家详细告知一下啊!!
      

  6.   

    如果硬盘共享,依次盘符会是h:,k:,l:
    sdrive="h:\"即可
    如果有driver控件,会自动列出所有的盘符
    sDrive = Left$(DrvSelect.Drive, 1)
    sDrive = sDrive & ":\"