Rilevare le informazioni delle unità hard disk, dvd, ecc tramite .net

In questo articolo, vedremo come utilizare la tecnologia .Net, in particolare con lo spazio dei nomi system.io, per rilevare le informazioni riguardanti le unità del nostro computer.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

L'articolo, avrà il compito di fornire informazioni riguardante la possibilità di rilevare le informazioni sui supporti del personal computer, quali, dvd, hard disk, unità rimovibili, cd-rom. A fine articolo, troverete il file di esempio utilizzato nell'articolo, sia per il linguaggio di programmazione VB.Net e sia per il linguaggio C#

Si crea un nuovo progetto di tipo window application, nella form, aggiungiamo un controllo combo box, il quale riporterà le unità del nostro pc, 19 controlli label, di cui alcuni avranno il compito di visualizzare dei titoli, ed altri dati della unità.

Impostate la proprietà text del controllo label come riportato nella figura 1, solo il testo che si trova nella colonna di sinistra e non in quello di destra.

Figura 1:

Stesura del codice:

Aggiungiamo lo spazio dei nomi, per la gestione dei file e cartelle, ossia System.io.

 

VB.Net
 Imports System.IO
C#
 Using System.IO;


 

 Creazione delle funzione per convertire in megabyte o gigabyte

Ora dobbiamo creare due funzione, che permettono di convertire un numero in megabyte ed in gigabyte, in questo modo, visualizzeremo lo spazio libero e lo spazio totale con le giuste unità di misura.

Di seguito si riportano le suddette operazioni:

VB.Net
 Private Function ConvertiBytesToMB(ByVal bytes As Int64) As String
Dim mb As Long = bytes / 1048576
Return mb.ToString("N")
End Function
Private Function ConvertiBytesToGB(ByVal bytes As Int64) As String
Dim gb As Long = bytes / 1073741824
Return gb.ToString("N")
End Function
C#
 private string ConvertiBytesToMB(Int64 bytes)
Int64 mb = bytes / 1048576;
return mb.ToString("N");
private string ConvertiBytesToGB(Int64 bytes)
Int64 gb = bytes / 1073741824;
return gb.ToString("N");

 

Funzione per il caricamento dei dati.

Si crea una funzione, che permette il caricamento dei dati, ossia di impostare la proprietà text dei vari controlli label, con le informazioni dell'unità selezionata. Questa funzione, verrà utilizzata per l'evento load della form e per l'evento SelectedIndexChanged del controllo combobox.

La funzione accetta un argomento di tipo stringa, ossia la lettera dell'unità, nella funzione, vengono rilevati le informazioni relative al tipo di unità (hard disk, cd, rimovibile e sconosciuto,  se è utilizzabile (per esempo per i cd-rom o dvd),  il nome, lo spazio disponibile e lo spazio totale, l'etichetta ed il formato.

Di seguito si riporta tale funzione.

VB.Net
CaricaDati(ByVal lettera As String)
'Oggetto per le informazioni del drive
Dim unita As New DriveInfo(lettera)
Select Case unita.DriveType
Case DriveType.CDRom"CD-ROM"
Case DriveType.Fixed"Disco Fisso"
Case DriveType.Removable"Rimuovibile"
Case DriveType.Unknown"Sconosciuto"
End Select
If unita.IsReady = True Then"SI"
Else"NO"""""""""""""
Exit Sub
End If
If (unita.AvailableFreeSpace > 1000000000) Then"GB: " & ConvertiBytesToGB(unita.AvailableFreeSpace)Else"MB: " & ConvertiBytesToMB(unita.AvailableFreeSpace)
End If
If (unita.TotalSize > 1000000000) Then"GB: " & ConvertiBytesToGB(unita.TotalSize)
Else
"MB: " & ConvertiBytesToMB(unita.TotalSize)
End If
If (unita.TotalFreeSpace > 1000000000) Then"GB: " & ConvertiBytesToGB(unita.TotalFreeSpace)
Else"MB: " & ConvertiBytesToMB(unita.TotalFreeSpace)
End If
End Sub
C#
void CaricaDati(string lettera)
//Oggetto per le informazioni del drive
DriveInfo unita = new DriveInfo(lettera);
switch (unita.DriveType)
case DriveType.CDRom:"CD-ROM";
break;
case DriveType.Fixed:"Disco Fisso";
break;
case DriveType.Removable:"Rimuovibile";
break;
case DriveType.Unknown:"Sconosciuto";
break;
default:
break;
if (unita.IsReady == true)"SI";
else
"NO";"";"";"";"";"";"";
return;
if (unita.AvailableFreeSpace > 1000000000)"GB: " + ConvertiBytesToGB(unita.AvailableFreeSpace);
else
"MB: " + ConvertiBytesToMB(unita.AvailableFreeSpace);
if (unita.TotalSize > 1000000000)"GB: " + ConvertiBytesToGB(unita.TotalSize);
else"MB: " + ConvertiBytesToMB(unita.TotalSize);
if (unita.TotalFreeSpace > 1000000000)"GB: " + ConvertiBytesToGB(unita.TotalFreeSpace);
else"MB: " + ConvertiBytesToMB(unita.TotalFreeSpace);

 

Impostare gli eventi della form e combobox.

Ora non resta che impostare il codice per l'evento load della form e per l'evento SelectedIndexChanged del controllo combobox.

Nell'evento load della form, aggiungiamo tutti i vari supporti (hard disk, supporti rimovibili, cd-rom, ecc) nel controllo casella di testo (combobox) . Tramite la classe driveinfo, otteniamo informazioni dei vari supporti.

Di seguito si riporta il frammento di codice di tali operazioni.

VB.Net
Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
'Ottengo le untià drive
Dim unita As DriveInfo() = DriveInfo.GetDrives()
If (cmbUnita.Items.Count > 0) Then
cmbUnita.SelectedIndex = 0
End Sub
C#
 private void Form1_Load(object sender, EventArgs e)
//Ottengo le untià drive
DriveInfo[] unita = DriveInfo.GetDrives();
if (cmbUnita.Items.Count > 0)

 

Siamo giunti quasi alla conclusione di questo articolo, ora non ci resta che impostare l'evento SelectedIndexChanged del controllo combobox. In questo evento, carichiamo o meglio impostiamo le label, con le informazioni riguardante l'unità selezionata nella casella combinata. In questo evento, verrà richiamata la funzione creata in precedenza, ossia caricadati.

Di seguito si riporta il codice di tale operazione.

VB.Net
Private Sub cmbUnita_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbUnita.SelectedIndexChanged

CaricaDati(cmbUnita.SelectedItem.ToString())

End Sub
 
C#

 

{

CaricaDati(cmbUnita.SelectedItem.ToString());

}

private void cmbUnita_SelectedIndexChanged(object sender, EventArgs e)
 

Conclusioni:

Ora non ci resta che avviare il progetto, tramite f5 o il comando esegui dal menu debug, per vedere il funzionamento di questo esempio.

Ricordiamo di cambiare opportunamento il codice con il nome della proprietà Name dei controlli label.

Tramite la parola download si può scaricare il file di esempio utilizzato in questo articolo.

Download