Imaginsystems


Tecniche di Programmazione - Codici Sorgenti - News Informatiche
Archivio Posts
Anno 2014

Anno 2013

Anno 2012
Statistiche
  • Views Home Page: 71.612
  • Views Posts: 542.443
  • Views Gallerie: 0
  • n° Posts: 210
  • n° Commenti: 224

VB.NET - Il Namescape My

VB.NET - Il Namescape My 


 

Una delle novità più interessanti di Visual Basic 2005 è il Namespace My che introduce un modo rapido per l'accesso ad importanti classi relative al computer su cui l'applicazione è in esecuzione, all'utente, all'applicazione stessa, ai form dell'applicazione e a eventuali webservice associati. 

È importante notare che My è un esclusiva del linguaggio Visual Basic .NET 2005, infatti non esiste niente di simile in C# e non si deve, quindi, far confusione con il this che invece è equivalente a Me di Visual basic. 

Inoltre, il namespace non è semplicemente una scorciatoia alle classi del .net framework ma va ben oltre questo visto che comunque ci sono funzioni che non sono presenti nel framework. 

Ecco una rappresentazione, sintetica, del namespace My:

My.Application 

L’oggetto My.Application rende disponibili informazioni sull’applicazione Windows Form o Console come il percorso, le CultureInfo, la versione e la modalità di autenticazione dell’utente. Le proprietà di My.Application sono:

ApplicationContext

Restituisce l’oggetto ApplicationContext utilizzatoper l’applicazione Windows Form corrente.

CommandLineArgs

Restituisce una collection (ReadOnly) che contiene gli argomenti della riga di comando.

Culture

Restituisce l’oggetto CultureInfo attualmente in uso.

Deployment

Restituisce l’oggetto ApplicationDeployment di ClickOnce che permette l’aggiornamento da programma dell’applicazione attuale.

Info

Restituisce un oggetto AssemblyInfo dove sono disponibile informazioni come versione, titolo, descrizione e altre.

IsNetworkDeployed

Restituisce un boolean che indica se l’applicazione è stata installando ClickOnce.

Log

L’oggetto Log rende disponibili proprietà e metodi per la scrittura di informazioni su eventi e eccezioni nel log dell’applicazione

UICulture

Restituisce il CultureInfo che il thread corrente utilizza per il recupero di risorse specifiche della cultura.

MinimumSpashScreenDiplayTime

Determina il tempo minimo di visualizzazione dellp splash screen (naturalmente disponibile solo per applicazioni Windows Forms)

OpenForms

Collection contenente i forms aperti.

SaveMySettingsOnExit

Determina se all’uscita, l’applicazione, salva tutte le impostazioni dell’utente.

SplashScreen

Determina il form utilizzato per lo splash screen.

Se vogliamo, ad esempio, scrivere qualcosa nel log delle applicazioni scriveremo, semplicemente:

My.Application.Log.WriteEntry("testo inserito nel log")

Oppure scrivere maggiori dettagli:

My.Application.Log.WriteEntry("message", TraceEventType.Information, 1)

Naturalmente, per poter utilizzare il listener EventLog occorre decommentare le seguenti righe nel file App.Config:

<sources> 

<!-- This section defines the logging configuration for My.Application.Log -->

<source name="DefaultSource" switchName="DefaultSwitch">

<listeners>

<add name="FileLog"/>

<!-- Uncomment the below section to write to the Application Event Log -->

<!--<add name="EventLog"/>-->

</listeners>

</source>

</sources>

Oltre alle property elencate in precedenza, My.Application espone anche metodi ed eventi:

ChangeCulture(string)

Metodo che imposta la cultura utilizzata.

ChangeUICulture(string)

Metodo che imposta la cultura utilizzata dal thread corrente per recuperare risorse specifiche alla cultura.

GetEnvironmentVariable(varname)

Restituisce il valore di una variabile d’ambiente.

DoEvents

Processa tutti i messaggi Windows in coda.

OnCreateSplashScreen

Evento eseguite quando l’applicazione crea lo splash screen.

ShutDown

Scatenato alla chiusura dell’applicazione.

StartUp

Scatenato all’avvio dell’applicazione.

StartUpNextInstance

Evento sollevato all’avvio di un’ulteriore istanza.

UnhandledException

Si scatena quando si verifica un’eccezione non gestita.

NetworkAvailabilityChanged

Si scatena quando l’applicazione ottiene o perde la disponibilità di una connessione di rete.


My.Computer

L’oggetto My.Computer è sicuramente l’oggetto più ricco del Namespace My, infatti, tutte le proprietà restituiscono oggetti figli che contengono molte informazioni del computer. 
Vista la vastità di My.Computer, tratteremo in maniera molto sintetica i vari oggetti che ne fanno parte. 

Iniziamo da My.Computer.Audio che permette l’esecuzione di un suono in maniera sincrona o asincrona in modo da, ad esempio, far eseguire un suono durante il normale svolgimento dell’applicazione.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

My.Computer.Audio.Play(
"c:\mysound.wav", AudioPlayMode.BackgroundLoop)

End Sub

Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed

My.Computer.Audio.Stop()

End Sub

Altro oggetto è My.Computer.Clipboard che contiene scorciatoie a System.Windows.Forms.Clipboard che permette l’accesso agli “appunti” di sistema.
' Memorizza una stringa negli appunti 
My.Computer.Clipboard.SetText("testo da copiare negli appunti"
' Restituisce il testo contenuto negli appunti 
Dim clip As String = My.Computer.Clipboard.GetText

Naturalmente l’oggetto contiene metodi specifici per ogni tipo di dato contenuto (immagini, testo, audio o elenco file) e in più un metodo generico SetData utilizzabile per tipi diversi da quelli elencati in precedenza. Ecco un esempio di utilizzo di SetData:

<Serializable()> _
Public Class Person 
    
Public Name As String 
    
Public Age As Integer 
End Class 

Dim p As New Person 
With p
    
.Name = "Vito Arconzo" 
    .Age 
= 26 
End With 
My.Computer.Clipboard.SetData(
"Person", p)
 
 

Da notare che la classe, per poter essere copiata nella clipboard, deve avere obbligatoriamente l'attributo Serializable

Passiamo adesso all’oggetto My.Computer.FileSystem che contiene tutti i metodi già disponibili in System.IO.DirectorySystem.IO.File e System.IO.Path con alcune “chicche” in più come il metodo FindInFiles che permette la ricerca di una file all’interno di una directory o di un albero di cartelle, oppure, altra feature, la possibilità che hanno alcuni metodi di visualizzare una finestra standard durante qualsiasi operazione sui files. 

Altri oggetti di My.Computer di sola lettura che contengono informazioni varie sul sistema sono Info,Keyboard, Mouse, Ports e Screen.

Info

Permette di accedere ad informazioni riguardanti la macchina locale, tra vui nome del sistema, sistema operativo, memoria e assembly caricati.

Keyboard

Permette di determinare lo stato della tastiera e dei vari tasti come CTRL, SHIFT, ALT o se BLOC NUM e BLOC SCROLL sono attivati.

Mouse

Contiene informazioni varie sul mouse collegato (numero di tasti, se dotato di rotella, etc...).

Name

Nome della macchina su cui gira l’applicazione.

Network

Fornisce informazioni sull’indirizzo IP della macchina, lo stato della connessione e, inoltre, consente l’esecuzione di un PING.

Ports

 

Printer

 

Registry

 

Screen

Permette l’accesso alle informazioni dei monitor collegati e alle rispettive proprietà come BitsPerPixel, WorkingArea e via dicendo.

 

 

Esempio di esecuzione di un PING:

If My.Computer.Network.Ping("192.168.0.1") Then 

MessageBox.Show(
"Ping effettuato con successo!")

Else
    MessageBox.Show("Ping NON effettuato con successo!") 

End If

Altro oggetto molto utile per lo sviluppo di applicazione Windows Forms è My.Computer.Registry che, comunque, contiene scorciatoie a Microsoft.Win32.Registry e permette quindi, operazioni di lettura e scrittura sul registro di Windows. Attenzione!!! Operazioni sul registro sono sempre molto pericolose e dannose se non sappiamo benissimo cosa stiamo facendo. Occorre, quindi, prestare molta attenzione a quello che si fa.

My.User 

L’oggetto My.User, utilizzabile anche per applicazioni ASP.NET, permette la verifica dell’identità dell’utente attualmente autenticato.


If
 My.User.IsAuthenticated Then 
    MessageBox.Show(
"L'utente autenticato è: " + My.User.Name) 
End If

My.Resource 

Passiamo adesso all’oggetto My.Resource che permette operazioni sulle risorse dell’applicazioni ossia informazioni incluse nell’assembly che possono essere file di testo, immagini o qualsiasi altro file che altrimenti verrebbero forniti come file esterni. Diventa molto semplice, ad esempio, accedere ad un file icona aggiunta come risorsa, dalla nostra applicazione:

Me.Icon = My.Resources.DefaultIcon

Naturalmente, DefaultIcon è il nome dell’icona aggiunta alle risorse dell’applicazione ed è, quindi, Visual Studio che automaticamente popola l’oggetto My.Resource con tutte le risorse aggiunte.

My.Settings 
Per l’accesso al file di configurazione dell’applicazione, il Namespace My, mette a disposizione l’oggetto My.Settings. Infatti Visual Studio genera “al volo” il codice della classe My.Settings in modo da avere supporto con l’intellisense per le impostazioni aggiunte nel file app.config. 
Mettiamo il caso di avere il file di configurazione:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
  <configSections> 
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > 
      <section name="NamespaceMy.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"allowExeDefinition="MachineToLocalUser" requirePermission="false" /> 
      </sectionGroup> 
   </configSections> 
</configuration>

Bene, potremo utilizzare direttamente :

Dim n As Integer = My.Settings.MaxRows 

Molto comodo. Oltre a vari metodi e proprietà per operazioni sulle impostazioni dell’applicazione, l’oggetto My.Settings espone anche alcuni eventi che vengono sollevate, ad esempio, quando viene modificata un’impostazione.

My.Forms 

Per concludere l’oggetto My.Forms che restituisce l’istanza del oggetto forms predefinito dell’applicazione:

My.Forms.Form1.Show()

Molto comodo in casi i cui dobbiamo accedere da altri form secondari a quello principale, senza doverci gestire una variabile Public con il riferimento al form principale.

Conclusioni 
In questo articolo abbiamo visto, seppur in maniera molto sintetica, le classe e le funzionalità disponibili con il Namespace My. L’utilizzo di My può, in molte situazioni, accellerare lo sviluppo di applicazioni con il .NET framework facendo comunque attenzione al fatto che My è un’esclusiva del linguaggio Visual Basic e, quindi, in situazione di porting verso altri linguaggi come C#, possono esserci problemi.

Approfondimenti

Visual Basic Developer Center: My Namespace

Visual Basic: Simplify Common Tasks by Customizing the My Namespace ... 

Categoria: VB.NET
martedì, 10 set 2013 Ore. 15.48

Messaggi collegati


Ora e Data
Mappa
Blogs Amici
    Copyright © 2002-2007 - Blogs 2.0
    dotNetHell.it | Home Page Blogs
    ASP.NET 2.0 Windows 2003