lunedì 13 ottobre 2008

Rilevare le informazioni delle unità hard disk, dvd, ecc tramite .Net(VB.Net e C#)

Riporto un articolo del sito iprogrammatori http://www.iprogrammatori.it/articoli/programmazione/art_rilevare-le-informazioni-delle-unita-har_128.aspx per rilevare le informazioni della propria unità


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


Nessun commento: