Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1906, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Scrivere add-in per Windows Live Messenger con Visual Basic 2005

LA PREMESSA

Grazie al .NET Framework 2.0 ed ai linguaggi gestiti appartenenti a tale tecnologia, è possibile scrivere componenti aggiuntivi per Windows Live Messenger (8.0 o superiore), il noto programma di messaggistisca istantanea di Microsoft. Per realizzare un componente aggiuntivo, è necessario creare un progetto di tipo "libreria di classi", qualunque sia il linguaggio prescelto. In questo post tratterò, ovviamente, Visual Basic 2005. In secondo luogo è necessario aggiungere un riferimento all'assembly MessengerClient.dll contenuto nella cartella C:\Programmi\MSNMessenger.

Tralasciando l'elenco di tutti i numerosi oggetti esposti da questo assembly, per i quali potete consultare la documentazione MSDN (vedi link più avanti). L'assembly MessengerClient.dll espone un namespace chiamato Microsoft.Messenger, al cui interno è implementata l'interfaccia IMessengerAddin che, come suggerisce il nome, predispone quanto richiesto da un componente aggiuntivo per Messenger. L'assembly in questione, inoltre, espone alcuni eventi che è possibile intercettare al fine di far compiere al nostro Messenger le operazioni che riteniamo necessarie in quel dato frangente.

IL CASO PRATICO

Ok, ma cosa ci facciamo con un add-in? beh, partiamo dall'idea che ha spinto me a crearmene una. Solitamente, quando la sera mi alzo dalla scrivania per andare a prepararmi la cena e a mangiare, imposto il mio stato personale su "A pranzo" per far capire che sono assente. Ciononostante capita che spesso alcuni miei contatti non facciano caso al mio stato personale e che mi inviino dei messaggi ai quali, ovviamente, non posso rispondere. Onde evitare che questo faccia dispiacere a chi mi scrive, ho pensato che forse Messenger poteva rispondere al mio posto in mia assenza: nel momento in cui imposto lo stato su "A pranzo", Messenger deve inviare un messaggio automatico a chi mi ha scritto dicendo che sono impegnato e che sarò io a ricontattare non appena possibile.

IL CODICE

Come si traduce in codice tutto questo? Proviamo a seguire i seguenti passaggi:

  1. si crea una nuova libreria di classi e si implementa l'interfaccia IMessengerAddin;
  2. all'interno del metodo Initialize aggiunto, si ottiene l'istanza corrente di Messenger che è un oggetto di tipo MessengerClient;
  3. si specificano alcune proprietà dell'add-in tramite l'oggetto MessengerClient.AddinProperties;
  4. si implementa un gestore dell'evento IncomingTextMessage, che si verifica quando un contatto ci scrive.

Il codice che realizza l'add-in è il seguente (i commenti sono inseriti nell'archivio zip che ho predisposto, di cui parlo più avanti):

Imports Microsoft.Messenger

Public Class Autoreply

       Implements IMessengerAddIn

                Private WithEvents myClient As MessengerClient

                Public Sub Initialize(ByVal messenger As Microsoft.Messenger.MessengerClient) _

Implements Microsoft.Messenger.IMessengerAddIn.Initialize

                        myClient = messenger

                        With myClient.AddInProperties
                            .FriendlyName = "Messenger Autoreply Add-in"
                            .Creator = "Alessandro Del Sole"
                            .Description = "Add-in per risposte automatiche in caso di assenza"
                            .Url = New Uri("
http://community.visual-basic.it/Alessandro")
                            .PersonalStatusMessage = "Sono in cucina a cena"
                        End With

               End Sub

               Private Sub myClient_IncomingTextMessage(ByVal sender As Object, ByVal e As IncomingTextMessageEventArgs) _

Handles myClient.IncomingTextMessage

                       If myClient.LocalUser.Status = UserStatus.OutToLunch Then

                          myClient.SendTextMessage("Questo è un messaggio automatico. Non posso risponderti perchè sto cucinando. _

Ti contatto io appena ho finito", e.UserFrom)

                        End If
               End Sub

    End Class

Una volta scritto il codice, prima di compilare l'assembly, è necessario tener presente che il nome dell'assembly e il nome del combinato namespace-classe devono coincidere: se l'assembly si chiama (per esempio) Messenger.Addin.dll, nella finestra My Project il namespace di primo livello deve essere chiamato Messenger e la classe deve chiamarsi Addin, per una questione di riconoscimento da parte di Messenger.

Sempre a proposito di Messenger, è fondamentale sapere che, affinchè questo sia in grado di riconoscere e accettare componenti aggiuntivi, è necessario aggiungere una nuova chiave di registro, che deve chiamarsi HKEY_CURRENT_USER\Software\Microsoft\MSNMessenger\AddInFeatureEnabled e deve essere di tipo DWORD, con valore 1. Solo dopo aver aggiunto questa chiave Messenger sarà in grado di accettare componenti aggiuntivi.

Fatto questo, aprite Messenger e visualizzate la finestra delle opzioni. Noterete che sarà ora presente la scheda "Componenti aggiuntivi", come in figura:

Fate clic sul pulsante "Aggiungi a Messenger" e selezionate l'assembly creato in precedenza. L'add-in deve essere attivato manualmente. Per farlo, fate clic sul menu dell'impostazione dello stato personale e dal menu contestuale selezionate "Attiva Messenger Autoreply", come in figura:

Perfetto. Ora provate a impostare lo stato personale su "A pranzo" e aspettate che qualche contatto vi invii un messaggio. Magia! Messenger risponde in automatico che siete impegnati in cucina e che risponderete non appena possibile. Bello no? :D

Per disattivare l'add-in dovete eseguire lo stesso passaggio fatto per attivarla.

Grazie a .NET Framework 2.0, con poche righe di codice e un po' di studio è possibile estendere e personalizzare in maniera eccezionale Windows Live Messenger a seconda delle proprie esigenze.

Qui c'è la documentazione ufficiale per programmare Windows Live Messenger: http://msdn2.microsoft.com/en-us/library/aa905655.aspx

Ho predisposto un archivio zip che potete scaricare da qui: http://www.visual-basic.it/scarica.asp?ID=903

All'interno dello zip c'è il progetto dell'add-in sopra illustrata comprensivo di dettagliati commenti, un file .reg per aggiungere al registro di Windows quanto richiesto con un solo clic di mouse e un file .vsi che installerà tra i modelli di Visual Studio 2005 un modello per la creazione di add-in per Windows Live Messenger. E non dite che non vi voglio bene... :D

Alessandro

Print | posted on venerdì 27 aprile 2007 21:37 | Filed Under [ Visual Basic ]

Powered by:
Powered By Subtext Powered By ASP.NET