
Por Jesús Rozano y David Frigolet
Un Add-in o accesorio para Windows Live Messenger no es más que un pequeño archivo .dll (librería dinámica de Windows) el cual es usado por Messenger para añadir funciones extra al cliente de mensajería. Funciona como un plugin, pudiendo ser activado o desactivado a petición del usuario, y es capaz de realizar una gran variedad de funciones. En otras palabras, es casi tan potente como el propio Windows Live Messenger, tanto para bien como para mal.
Los archivos .dll de los add-ins pueden ser programados por usuarios, pudiendo un programador crear uno para satisfacer una necesidad la cual Messenger u otro programa de terceros no pueda satisfacer. Se programan usando .NET Framework 2.0, el marco de desarrollo de aplicaciones de Microsoft, pudiendo usar tanto Visual Basic .NET como C#.
Windows Live Messenger, como ya hemos dicho, tiene soporte para los add-ins, aunque está desactivado por defecto en versiones beta, y para ello deberemos habilitarlo manualmente (ver más adelante). Otra de las limitaciones de Messenger con respecto a los add-in es que sólo es posible ejecutar un add-in al mismo tiempo. Para usar otro distinto, tendremos que deshabilitar el que está funcionando actualmente (si hay alguno) y cargar el deseado.
Una vez hecha la introducción, comenzamos con los conocimientos básicos para desarrollar un add-in para Windows Live Messenger usando el lenguaje de programación C#.
ACTIVAR EL SOPORTE PARA ADD-INS
Como ya hemos dicho en la Introducción de este artículo, Windows Live Messenger no tiene el soporte para los add-ins habilitado por defecto en sus versiones beta, de modo que tendremos que habilitarlo manualmente. Para ello necesitaremos hacer uso del Registro de Windows:
- Para ejecutar el Editor del Registro de Windows, haremos clic en el menú Inicio, y seleccionamos “Ejecutar” (tecla “Windows” + R).
- Escribimos “regedit” (sin las comillas) y pulsamos “Aceptar”.
- Navegamos a través del árbol de directorios del Registro hasta la siguiente ubicación:
HKEY_CURRENT_USERSOFTWAREMicrosoftMSNMessenger
- Añadiremos un nuevo valor. En la parte derecha del Editor del Registro, hacemos clic con el botón derecho del ratón en una zona en blanco, y seleccionamos “Nuevo” > “Valor DWORD”.
- Nombraremos al nuevo valor añadido “AddInFeatureEnabled”.
- Hacemos doble clic sobre el valor recientemente creado para modificar su valor a “1”, en el cuadro rotulado “Información del valor”.
- Aceptamos la modificación y salimos del Registro.
Otra forma de activarlo es crear un archivo de texto con extensión .reg y añadirle lo siguiente:
REGEDIT4
[HKEY_CURRENT_USERSoftwareMicrosoftMSNMessenger]
"AddInFeatureEnabled"=dword:00000001
Guardamos el archivo y lo ejecutamos.
Con esto habremos habilitado el soporte para add-ins de Windows Live Messenger. No obstante, si hemos realizado estos pasos mientras Messenger estaba ejecutándose, deberás cerrarlo y volverlo a cargar para que los cambios surtan efecto.
Para verificar que ahora Windows Live Messenger tiene habilitado el soporte para add-ins, tendremos que mirar en la ventana de opciones generales (Menú “Herramientas” > “Opciones...”). Una vez allí, si todo ha ido bien, deberíamos ver una nueva sección en el cuadro de la izquierda llamada “Add-ins” o “Accesorios”.
QUE PODEMOS HACER CON LOS ADD-INS
- Evento IncomingTextMessage Event – Los add-ins permiten obtener los mensajes recibidos y elaborar una respuesta personalizada para ese mensaje.
- Evento OutgoingTextMessage – Los add-ins tienen la posibilidad de modificar y cancelar los mensajes enviados.
- Evento StatusChanged – Permite monitorizar los cambios de estados propios y de nuestros contactos.
- Send Messages – Permite enviar 3 tipos de mensajes: texto, zumbido, acción.
- SendTextMessage
- SendNudgeMessage
- SendActionMessage
- Nuevo tipo de mensaje sin "xxx dice:"
- Propiedad LocalUser - Se usa para extraer información del usuario local: nick, correo, estado, etc.
- Propiedad SavedState – Guardar y carga estado a través del messenger.
- Evento ShowOptionsDialog – Interfaz de configuración de nuestro add-in.
- AddInDetails property – Propiedades del add-in: nombre, nick, imagen, mensaje personal, etc.
Los add-ins se ejecutan bajo el entorno CAS (Code-Access-Security) lo que nos impedirá acceder al sistema de ficheros, registro, Internet, etc. Existiendo la posibilidad de ejecutarlos en entorno GAC.
PASOS BÁSICOS PARA LA CREACIÓN DE ADD-INS
Los add-ins de Windows Live Messenger son escritos usando una librería que se instala con el programa, llamada MessengerClient.dll, y localizada en la carpeta de archivos de Messenger, siendo esta C:Archivos de ProgramaMSN Messenger en las versiones antiguas de Messenger o bien C:Archivos de ProgramaWindows LiveMessenger. Esta librería contiene el espacio de nombres (namespace en inglés) Microsoft.Messenger.
Para poder crear un add-in, abriremos Visual Studio y crearemos una biblioteca de clases, añadiendo una referencia a la librería MessengerClient.dll.
Después, tendremos que cambiar las propiedades del proyecto, de forma que el ensamblado (assembly) sea igual al nombre de la clase del add-in. Esto es importante si queremos que nuestro add-in funcione correctamente. En nuestro caso lo definiremos como sigue:
namespace MessengerAddin
{
public class MyAddin
{
De modo que tendremos que asignar el siguiente nombre al ensamblado (assembly) “MessengerAddin.MyAddin”.
Continuamos importando el espacio de nombres Microsoft.Messenger e implementando la interfaz IMessengerAddin.
namespace MessengerAddin
{
public class MyAddin : IMessengerAddIn
{
private MessengerClient messenger;
public void Initialize(MessengerClient messenger)
{
this.messenger = messenger;
}
}
}
De modo que ya tenemos creado nuestro addin. ¿Qué hace? Absolutamente nada, al menos por ahora. Pero de eso nos encargaremos a continuación.
AÑADIENDO FUNCIONALIDAD AL ADDIN
Ya tenemos listos todos los preparativos necesarios para que nuestro add-in funcione como es debido. Ahora llega la parte creativa, y probablemente la más emocionante del trabajo: conseguir que nuestro add-in haga algo útil. Es hora de poner a trabajar a nuestro cerebro ideando nuevas funciones con las que dotar a Windows Live Messenger. Pero antes de que eso ocurra, vamos a probar nuestro accesorio con el mítico “Hello World” que todo programador que se precie conocerá de sobra. Para ello, usaremos el siguiente código, además de para realizar otras tareas:
public void Initialize(MessengerClient messenger)
{
this.messenger = messenger;
messenger.AddInProperties.Creator = "MessengerAdictos.com";
messenger.AddInProperties.Description = "Ejemplo de addin para Messenger";
messenger.AddInProperties.FriendlyName = "MyAddin";
messenger.AddInProperties.PersonalStatusMessage = "Visita MessengerAdictos.com";
messenger.AddInProperties.Status = ...;
messenger.AddInProperties.Url = new Uri("");
messenger.AddInProperties.UserTile = GetImage(i);
}
El método GetImage necesita del espacio de nombres System.Drawing, de modo que necesitaremos añadir una referencia a System.Drawing.dll e importar el espacio de nombres. La propiedad UserTile de los add-ins nos permitirá cargar una imagen desde cualquier fuente ya sea creándola o desde un fichero.
private Image GetImage(int i)
{
Bitmap bmp = new Bitmap(40, 40);
Graphics g = Graphics.FromImage(bmp);
g.FillPie(Brushes.Red, 5, 5, 30, 30, i * 90 , 90);
g.FillPie(Brushes.Blue, 5, 5, 30, 30, (i + 1) * 90, 90);
g.FillPie(Brushes.Yellow, 5, 5, 30, 30, (i + 2) * 90, 90);
g.FillPie(Brushes.Green, 5, 5, 30, 30, (i + 3) * 90, 90);
return bmp;
}
Compilaremos el proyecto y regresaremos a la ventana de opciones de Windows Live Messenger, en la sección Accesorios. Haremos clic en el botón “Agregar a Messenger...” del paso 2 y seleccionaremos el archivo .dll de nuestro proyecto recién compilado.
Una vez importado, acepta, y vuelve a la pantalla de contactos de Messenger. Haz clic sobre tu nombre para mostrar (nick) y selecciona la opción para activar tu accesorio, debajo de la lista de estados disponibles. Con esto tu add-in se cargará y comenzará a funcionar. Si todo ha ido bien, tanto tu imagen para mostrar como tu mensaje personal deberían cambiar, reflejando las cadenas que hayas escrito en la etapa de diseño del add-in.

AÑADIENDO AÚN MÁS FUNCIONALIDAD AL ADD-IN
Ahora que ya tenemos los conocimientos más básicos de los add-ins bajo control, es hora de crear algo más útil. A continuación crearemos un sencillo filtro de conversación, de modo que cada vez que un mensaje se envíe a través de Windows Live Messenger, podamos tener control acerca de lo que sucederá con dicho mensaje. Este es el código para inicializar todo:
public void Initialize(MessengerClient messenger)
{
this.messenger = messenger;
messenger.IncomingTextMessage += new EventHandler(messenger_IncomingTextMessage);
}
void messenger_OutgoingTextMessage(object sender, OutgoingTextMessageEventArgs e)
{
string msg = e.TextMessage.ToLower();
if (msg.Contains("contraseña"))
e.Cancel = MessageBox.Show("Tu mensaje parece que contiene una contraseña. ¿De verdad deseas enviarlo?", "MyAddin", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.No;
}
No hace falta decir que tenemos que añadir una referencia a System.Windows.Forms.dll e importar el espacio de nombres System.Windows.Forms. Hora de volver a compilar nuestro proyecto para ver los cambios. Ahora, si compilas el proyecto con Windows Live Messenger ejecutándose, recibirás un mensaje de error por parte de Visual Studio indicando que no es posible acceder al archivo ya que está siendo usado por otro proceso. La forma más rápida de evitar esto es cerrar completamente Windows Live Messenger, y volver a recompilar.
Una vez compilado la nueva versión de nuestro add-in, lo volveremos a cargar en Messenger si fuera necesario (ver arriba cómo), y abriremos una ventana de conversación para probarlo. Un mensaje en la parte superior del cuadro de texto de la conversación nos indicará que nuestro accesorio está activado y podría estar enviando mensajes. Probaremos a enviar un mensaje que contenga la palabra “contraseña”. Nuestro add-in detectará esta cadena y mostrará una alerta indicándonos del hecho. Si pulsamos “no”, veremos como el envío se cancela y el mensaje no llega a nuestro contacto.
ALGO DIVERTIDO: UN CONTESTADOR CON LAS RESPUESTAS DEL REVÉS
Si nuestro objetivo es fastidiar a todos los contactos que deseen iniciar una conversación con nosotros, o si simplemente queremos reírnos un rato, podemos hacer que nuestro add-in devuelva todos los mensajes que nos envíen, pero con el texto al revés (es decir, la primera letra pasa a ser la última, la segunda, la penúltima, etc.). He aquí el código necesario para nuestra broma:
public void Initialize(MessengerClient messenger)
{
this.messenger = messenger;
messenger.OutgoingTextMessage += new EventHandler(messenger_OutgoingTextMessage);
}
void messenger_IncomingTextMessage(object sender, IncomingTextMessageEventArgs e)
{
string s = e.TextMessage;
StringBuilder sb = new StringBuilder();
for (int i = s.Length - 1; i >= 0; i--)
sb.Append(s[i]);
string reverse = sb.ToString();
messenger.SendTextMessage(reverse, e.UserFrom);
}
Si queremos probarlo, nada más necesitaremos volver a compilar el proyecto tal y como hicimos antes, iniciar sesión, y esperar a que alguien inicie una conversación con nosotros.
USANDO TIMERS (TEMPORIZADORES)
Como ya sabemos, los timers o temporizadores pueden ser usados para ejecutar ciertas acciones en intervalos regulares. Usando timers podemos cambiar nuestra imagen para mostrar o nuestro mensaje personal cada cierto tiempo. A continuación os mostramos el código necesario para mostrar un contador del tiempo que llevamos viviendo:
public void Initialize(MessengerClient messenger)
{
this.messenger = messenger;
System.Timers.Timer tmr = new System.Timers.Timer(5000);
tmr.Elapsed += new System.Timers.ElapsedEventHandler(tmr_Elapsed);
tmr.Start();
}
private DateTime birthday = new DateTime(1990, 9, 22);
private int i = 0;
void tmr_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
i = (i + 1) % 4;
TimeSpan span = DateTime.Now - birthday;
messenger.AddInProperties.PersonalStatusMessage = String.Format("{0} days {1} hours {2} minutes {3} seconds on planet Earth", span.Days, span.Hours, span.Minutes, span.Seconds);
messenger.AddInProperties.UserTile = GetImage(i);
}
Ejemplo Contestador Nuestro primer Add-in
En el siguiente ejemplo pasaremos a construir un simple contestador automático.
1.- Una vez tengamos abierto nuestro Visual Studio crearemos un nuevo proyecto en nuestro lenguaje de programación elegido y seleccionamos Class Library.

2.- Añadimos la referencia como se explica en la introducción.

3.- Pegamos el código, compilamos y ya tendremos listo nuestro primer add-in.

4.- Cargamos nuestro add-in desde el menú herramientas opciones accesorios de nuestro Windows Live Messenger y lo activamos.

INSTALAR NUESTROS ADDINS EN MESSENGER
Una vez hemos creado nuestro addin, sólo queda instalarlo en messenger. Si ya hemos activado el soporte para addins de Windows Live Messenger como hemos explicado anteriormente, el proceso será muy sencillo. Tan sólo deberemos iniciar sesión en nuestro messenger y dirigirnos a “Herramientas” à “Opciones”. En la ventana de opciones de Messenger pulsaremos la última pestaña, llamada “Accesorios” y por último haremos clic sobre el botón “Agregar a messenger”. Ya solo queda indicar donde hemos guardado el addin (siempre con la extensión .dll) y por fin tendremos nuestro accesorio para messenger instalado y funcionando.
Código de nuestro Add-in
using System;
using Microsoft.Messenger;
namespace MiPrimerAddin
public class MiAddin : IMessengerAddIn
void IMessengerAddIn.Initialize(MessengerClient client)
{
m_client = client;
m_client.AddInProperties.FriendlyName = "Contestador";
m_client.AddInProperties.PersonalStatusMessage =
"Messengeradictos.com";
m_client.IncomingTextMessage +=
new EventHandler
(this.OnIncomingMessage);
}
mensaje se envía un mensaje de respuesta
public void OnIncomingMessage(object sender,
IncomingTextMessageEventArgs args)
m_client.SendTextMessage("Hola " +
args.UserFrom.FriendlyName +
" No estoy disponible, ¡hablamos luego!.",
args.UserFrom);
}
}
Descargar Proyecto Contestador Visual Studio C#
CONCLUSIÓN
De este artículo podemos extraer la importancia que los add-ins poseen, ya que consiguen satisfacer las necesidades de algunos usuarios de forma fácil, rápida y eficaz. Cierto es que a pesar de haberse lanzado como novedad en la versión 8 de Windows Live Messenger no gozan de la popularidad de otro tipo de accesorios que pueden ser creados por particulares, como los famosos Scripts de Messenger Plus! Live.
También hemos comprobado que Windows Live Messenger pone a disposición de los desarrolladores una API bastante potente, con la que podremos interactuar con el usuario, cambiando la imagen para mostrar, el mensaje personal, o incluso enviar y recibir texto en las conversaciones, con lo que el abanico de posibilidades es bastante amplio, y depende del desarrollador el crear un accesorio útil. Lo que sí es cierto es que la API en sí no proporciona todo el control que a los programadores avanzados les gustaría, y en ciertos escenarios se nos queda un poco pequeña.






