Как программно получить размер сетевого диска? - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток. Необходимо мониторить размер свободного места на сетевом диске. Есть IO.DriveInfo.TotalFreeSpace но с помощью него можно получить информацию о дисках только на локальном компьютере. А как подключиться к компьютеру в локальной сети (например, имеющему адрес 192.168.x.x)? Заранее всем спасибо.

Решение задачи: «Как программно получить размер сетевого диска?»

textual
Листинг программы
Imports System.Runtime.InteropServices
 
Public Class Form1
    <DllImport("kernel32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Private Shared Function GetDiskFreeSpaceEx(lpDirectoryName As String, ByRef lpFreeBytesAvailable As ULong, ByRef lpTotalNumberOfBytes As ULong, ByRef lpTotalNumberOfFreeBytes As ULong) As <MarshalAs(UnmanagedType.Bool)> Boolean
    End Function
 
    Public Shared Function GetDriveSpace(folderName As String, ByRef freespace As ULong, ByRef totalspace As ULong) As Boolean
 
        Dim free As ULong = 0
        Dim total As ULong = 0
        Dim dummy2 As ULong = 0
 
        Try
 
            If Not String.IsNullOrEmpty(folderName) Then
 
                If Not folderName.EndsWith("") Then
                    folderName += ""
                End If
 
                If GetDiskFreeSpaceEx(folderName, free, total, dummy2) Then
                    freespace = free
                    totalspace = total
                    Return True
                End If
 
            End If
 
        Catch
        End Try
 
        Return False
 
    End Function
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim totalspace As ULong = 0
        Dim freespace As ULong = 0
        If GetDriveSpace("\\fileserver\public", freespace, totalspace) Then
            'freespace - свободное пространство
            ' totalspace  - всего
           TextBox1.Text = Math.Round(freespace / 1024 / 1024, 2) & " Mb"
            TextBox2.Text = Math.Round(totalspace / 1024 / 1024, 2) & " Mb"
        Else
            '
        End If
    End Sub
End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы