para crear algunas aplicaciones que para los que le saben a esto de programacion se podran imaginar muchisimas cosas que puedes hacer con este tutorial jaja es en Visual basic.
Comenzemos hablando sobre como podemos hacer para interactuar con MSN Messenger o Windows Live Messenger (De ahora en mas nos referiremos a ellos como Messenger). Existe una referencia para poder trabajar con Visual Basic que nos da opciones que nos permitiran trabajar con Messenger. Lo que haremos nosotros no sera crear la referencia, sino que trabajaremos con el objeto “Messenger.UIAutomation”. Para poder acceder a este objeto desde cualquier parte del codigo debemos declararlo globalmente, pero como lo crearemos en momento de ejecución luego de declararlo globalmente, debemos crear el objeto al iniciar la aplicación, es decir, en el Form_Load. Así que creamos la declaracion global, para ello nos vamos a la parte de codigo y nos situamos al inicio (fuera de cualquier sub y cualquier Function, debe estar suelta), y escribimos esto:
Código
Dim ObjMSN As ObjectLuego, para crear el objeto nos vamos al Form_Load (hacen doble clic en el formulario) y escribimos esto:
Código
Set ObjMSN = CreateObject("Messenger.UIAutomation")
Asique les deberia quedar asi:

Bueno, una vez que ya tenemos esto, podemos comenzar a programar para Messenger. Lo que hare sera ir explicandole algunas cosas utiles que les podran servir

Listando Contactos
El objeto del Messenger nos permite obtener la lista de contactos del usuario que se encuentre conectado en ese momento. Lo que hare a continuación sera explicarles de que manera podemos obtener una lista de todos los contactos.
El modo en que se obtiene la lista es a través de una colección, así que debemos usar un bucle For Each en donde crearemos un elemento que hara referencia al contacto actual de la lista. El contacto se obtendra por su casilla, es decir de tipo “contacto@servicio.com”. Lo que haremos sera crear un Sub llamado “Listar” y en el formulario agregaremos un List y lo llamaremos “lstContactos”. Dentro del sub Listar incluiremos una rutina para recorrer la lista de contactos y agregar uno por uno a la lista del formulario. Esta sera nuestra primera interaccion con el Messenger, vemaos el codigo:
Código
Private Sub Listar()
'UnContacto va a ser el contacto actual que _
se toma de la coleccion. Hacemos un bucle _
que recorra todos los contactos y los iremos _
agregando en la lista.
For Each UnContacto In ObjMSN.MyContacts
'Lo agregamos a la lista...
lstContactos.AddItem UnContacto.SinginName
'Seguimos con la coleccion.
Next
End Sub
Muy bien, ya logramos listar los contactos, pero habras notado que lo que se agrega solo es la casilla. Ahora que pasa si queremos ver el nick del contacto? Pos, para esto tenemos “FriendlyName” solo debemos pone en vez de SinginName, FriendlyName y te pone el nick. Así que ahora vamos a hacer lo siguiente:
Agregaremos un commandbutton que llamara a la funcion Listar. Así que lo que hara este boton sera listar todos los contactos agregandolos a la lista con su casilla correspondiente. Al boton le ponemos como caption “Listar Contactos”, se tendria que ver algo asi:
Puse la lista asi de ancha porque, ya saben, se usan nick’s con el maximo de caracteres permitidos.. Bua, por ahora solo listamos las casillas. Veamos como tendriamos el code hasta ahora:
Código
Dim ObjMSN As Object
Private Sub Form_Load()
'Creamos el objecto del Messenger
Set ObjMSN = CreateObject("Messenger.UIAutomation")
End Sub
Private Sub Command1_Click()
'Llamamos a funcion que nos _
lista los contactos.
Call Listar
End Sub
Private Sub Listar()
'UnContacto va a ser el contacto actual que _
se toma de la coleccion. Hacemos un bucle _
que recorra todos los contactos y los iremos _
agregando en la lista.
For Each UnContacto In ObjMSN.MyContacts
DoEvents
'Lo agregamos a la lista...
lstContactos.AddItem UnContacto.signinname
'Seguimos con la coleccion.
Next
End Sub
Bueno, ahora vamos a agregarle una opcion para poder ver en vez de la casilla del contacto, su nick. Para ello vamos a dar la opcion en general, es decir, Ver todos por casilla o ver todos por nick. Lo que haremos sera agregarle otro boton al proyecto, y en el caption le ponemos “Ver Contactos por nick”. Luego, le damos a su propiedad “Enabled” False. Esto sera para que solo se pueda presionar el boton si se listaron contactos, así que deberemos modificar el codigo actual para agregarle una linea al boton que lista los contactos, dicha linea sera para darle al segundo boton que agregamos una propiedad Enabled en Trae, ya que se abran listado los contactos y podemos habilitar el boton.
Cuando el boton para cambiar la vista de los contactos (de casilla a nick y viceversa) debemos hacer algo como:
*Crearemos una variable global llamada “Vista” que sera de tipo “Integer”, cuando se pongas la vista de los contactos como casilla, su valor sera 0, en caso contrario sera 1.
*Usar una estructura If para saber como estan listados los contactos.
Así que veamos mas o menos lo que hacemos, antes que nada declaramos globalmente la variable “Vista”, la pondremos arriva de la variable ObjMSN:
Código
Dim Vista As Integer
Ahora hay que aclarar, por defecto esta variable tendra valor 0, lo que para nosotros sera la vista en casilla. Y como por defecto se listaran los contactos como casilla, nos biene al pelo
.Ahora debemos programar el boton, el segundo boton lo que hara al hacerle clic sera ver que valor tiene la variable Vista, si es 0, cambia su caption a “Ver Contactos por Casilla” y luego crearemos otro bucle como el del boton 1, pero este sera un bucle que va a ir de 0 hasta la cantidad de elementos en la lista. Es decir que recorrera todos los contactos de NUESTRA lista, los volvera a agregar pero con su nick, luego de agregarlo lo eliminaremos de la lista.. Así que veamos el codigo del segundo boton:
Código
Private Sub Command2_Click()
'Miramos el valor de la variable
If Vista = 0 Then
'Cambiamos el caption del boton
Command2.Caption = "Ver Contactos por casilla"
'Vaciamos la lista
lstContactos.Clear
'Si es 0, pasamos la lista a nick's
For Each VistaNick In ObjMSN.MyContacts
'Agregamos los contactos con su nick
lstContactos.AddItem VistaNick.FriendlyName
Next
'Cambiamos el valor de Vista
Vista = 1
Else
'Cambiamos el caption del boton
Command2.Caption = "Ver Contactos por nick"
'Vaciamos la lista
lstContactos.Clear
'Si es 1, pasamos la lista a casillas
For Each VistaNick In ObjMSN.MyContacts
'Agregamos los contactos con su casilla
lstContactos.AddItem VistaNick.SigninName
Next
'Cambiamos el valor de Vista
Vista = 0
End If
End Sub
entonces, ya tenemos un lisdo programita que nos lista los contactos, y nos deja verlos como casilla o como nick. ¿Pero es suficiente? NO, claro que no, debemos avanzar mas.
Lo que sigue sera establecer contacto con un.. bueno, un contacto ^^. Para hacer esto, tenemos la opcion “InstantMessage” que nos abre la ventana de conversación que le indiquemos. Así que, seguro que ya sabran lo que quiero hacer, agregaremos un botoncito que nos permitira establecer contacto con un contacto seleccionado de la lista. Bueno, para esto debemos conocer tambien las propiedades del control List de VB, ya que debemos identificar el item de la lista seleccionado y debemos obtener la casilla del item seleccionado. Aquí se nos ah complicado un poco, ya que si la vista de la lista esta como vista en “nick” debemos avriguar la casilla que corresponde a ese nick (Para ello usaremos otro bucle, ahora lo explicare), pero si esta como vista en casilla, se nos facilita mucho mas el trabajo, ya que solo debemos obtener el contenido del item (que sera la casilla) y listo.
Lo que veremos a continuación sera como obtener la casilla del contacto si la lista esta como vista en nicks. Lo que haremos sera crear un bucle que liste todos los contactos por su nick, y si este nick coincide con el nick que se selecciono, obtendremos la casilla del contacto y listo!. Pero antes de comenzar con este bucle, debemos crear otro bucle antes de este para actualizar la lista, ya que si el contacto cambio de nick no lo encontraremos nunca… No es tan complicado como suena, así que no se preocupen
.Ahora, agregaremos un nuevo formulario llamado Form2, le creamos una variable PUBLICA llamada Contacto:
Código
Public Contacto As StringY no le haremos nada mas, lo dejamos ahí, y seguimos con el Form1
Vamos a ver el codigo ya armado, pero como siempre, cada linea bien comentada para que se entienda:
Código
Private Sub Command3_Click()
'si no hay un item seleccionado salimos..
If lstContactos.Selected = False Then: Exit Sub
'Si la vista esta como vista en NICK:
If Vista = 1 Then
'Creamos un bucle que actualize la lista:
For Each UnContacto In ObjMSN.MyContacts
'Lo agregamos a la lista...
lstContactos.AddItem UnContacto.FriendlyName
'Seguimos con la coleccion.
Next
'Ahora que la lista esta actualizada, debemos
'Hacer un bucle igual al anterior pero que lo
'usaremos para comparar los nick's del contacto
'actual de la lista del messenger con el seleccionado
'de la lista lstContactos
For Each Contacto In ObjMSN.MeyContacts
Nick = Contacto.FriendlyName
'Si los nick's cohinciden:
If Nk = lstContactos.List(lstContactos.ListIndex) Then
'Abrimos el Form2 y le damos como valor a su varibale
'global Contacto, la casilla del contacto
form2.Contacto = Contacto.SinginName
form2.Show
End If
Next
'Si la vista esta como casilla
Else
'A la variable contacto del Form2 le damos como valor la casilla
form2.Contacto = lstContactos.List(lstContactos.ListIndex)
'abrimos el Form2
form2.Show
End If
End Sub
espero
que les guste
1 comentario:
Che y donde konsigo el activex. el objeto ese para el messenger.ui.. etc..? te agredesco si me ayudas,, saludos..
BUen post
Publicar un comentario