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

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

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

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

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

textual
Листинг программы
  1. Imports System.Runtime.InteropServices
  2.  
  3. Public Class Form1
  4.     <DllImport("kernel32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  5.     Private Shared Function GetDiskFreeSpaceEx(lpDirectoryName As String, ByRef lpFreeBytesAvailable As ULong, ByRef lpTotalNumberOfBytes As ULong, ByRef lpTotalNumberOfFreeBytes As ULong) As <MarshalAs(UnmanagedType.Bool)> Boolean
  6.     End Function
  7.  
  8.     Public Shared Function GetDriveSpace(folderName As String, ByRef freespace As ULong, ByRef totalspace As ULong) As Boolean
  9.  
  10.         Dim free As ULong = 0
  11.         Dim total As ULong = 0
  12.         Dim dummy2 As ULong = 0
  13.  
  14.         Try
  15.  
  16.             If Not String.IsNullOrEmpty(folderName) Then
  17.  
  18.                 If Not folderName.EndsWith("") Then
  19.                     folderName += ""
  20.                 End If
  21.  
  22.                 If GetDiskFreeSpaceEx(folderName, free, total, dummy2) Then
  23.                     freespace = free
  24.                     totalspace = total
  25.                     Return True
  26.                 End If
  27.  
  28.             End If
  29.  
  30.         Catch
  31.         End Try
  32.  
  33.         Return False
  34.  
  35.     End Function
  36.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  37.         Dim totalspace As ULong = 0
  38.         Dim freespace As ULong = 0
  39.         If GetDriveSpace("\\fileserver\public", freespace, totalspace) Then
  40.             'freespace - свободное пространство
  41.             ' totalspace  - всего
  42.            TextBox1.Text = Math.Round(freespace / 1024 / 1024, 2) & " Mb"
  43.             TextBox2.Text = Math.Round(totalspace / 1024 / 1024, 2) & " Mb"
  44.         Else
  45.             '
  46.         End If
  47.     End Sub
  48. End Class

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


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

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

13   голосов , оценка 3.846 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы