Aqui Vos escribo un buen manual para que aprendan a programar para msn.
Capitulo 1 Iniciacion y Elemenos Básicos
Antes que nada añadiremos la referencia messenger api type library como se puede ver en la siguiente imagen. Para ello vamos al menu proyecto / referencias y Agregamos la referencia Messenger Api Type Library
Declaraciones Principales del objeto
CODE
Option Explicit
Public WithEvents MSN As Messenger
Iniciamos la api esto va colocado en el form load
CODE
Set MSN = New Messenger
Ahora ya estamos listos para programar
Propiedades de uso local
MyFriendlyName -> Devuelve tu nick
MyPhoneNumber -> Devuelve tu numero de telefono
MyServiceId -> Devuelve la id del servicio
MyServiceName -> Devuelve el nombre del servicio
MySigninName -> Devuelve el e-mail
MyStatus -> Devuelve el estado
Usando msn.mystatus o alguno de los anteriores es lo que necesitamos para utilizarlo
Ejemplos de cambios de estados.
CODE
msn.MyStatus = MISTATUS_AWAY
msn.MyStatus = MISTATUS_ONLINE
Ejemplo leer en un textbox nuestro nick y nuestro email
CODE
Text1.Text = MSN.SigninName & msn.MyFriendlyName
Ateriormente para cambiar el nick con utilizar myfriendlyname era necesario pero está propiedad actualmente es de solo lectura por lo que no se puede utilizar asi tan facilmente.
Usando la lista de contactos
Propiedades IMessengerContact
Blocked -> Valor logico que devuelve verdadero si un contacto está bloqueado o falso en caso contrario.
FriendlyName -> Devuelve el nick de un contacto yl as siguiente propiedades son iguales que las locales pero devuelven los datos de un contacto
PhoneNumber
Property
ServiceId
ServiceName
SigninName
Status
Declaraciones e iniciacion para usar la lista de contactos
CODE
Public WithEvents MsgrUIA As MessengerAPI.Messenger
Private Sub Form_Load()
Set MsgrUIA = New MessengerAPI.Messenger
Dim user As IMessengerContact 'Declaramos la variable user como contacto del mssenger
End Sub
Como cargar nuestra lista de contactos conectados en un listbox
añadimos esto en el form load
CODE
For Each user In MsgrUIA.MyContacts 'Por cada usuario en la lista de contactos si esta conectado en linea, ausente, no disponible, etcetera. agrega cada direccion de correo a la list1
If user.Status = MISTATUS_ONLINE Or user.Status = MISTATUS_AWAY Or user.Status = MISTATUS_BE_RIGHT_BACK Or user.Status = MISTATUS_BUSY Or user.Status = MISTATUS_IDLE Or user.Status = MISTATUS_ON_THE_PHONE Or user.Status = MISTATUS_OUT_TO_LUNCH Then
List1.AddItem user.SigninName 'tb podriamos hacer esto con el nick colocando user.friendlyname
End If
Next
Si queremos que se carguen usuarios conectados y no conectados colocamos lo siguiente tambien en el form load
CODE
Dim user As IMessengerContact 'Declaramos la variable user como contacto del mssenger
For Each user In MsgrUIA.MyContacts 'Por cada usuario en la lista de contactos si esta conectado en linea, ausente, no disponible, etcetera. agrega cada direccion de correo a la list1
List1.AddItem user.SigninName 'tb podriamos hacer esto con el nick colocando user.friendlyname
Next
Si en vez de añadir a la lista los contactos por correo podemos añadirlo por nick simplemente cambiando user.signinname por user.friendlyname
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Capitulo 2 Ejemplos Basicos
Cambiar el nick llamando a la ventana de opciones / pestaña general
Se necesita un textbox y un command button
Este metodo llama a la ventana y envia el texto mediante sendkey enter envio de la tecla enter
CODE
Private Sub Command1_Click()
msn.OptionsPages 0, MOPT_GENERAL_PAGE
SendKeys (Text1.Text & "{ENTER}")
End Sub
Enviar Mensaje instantaneo
Seguimos utilizando msn. y viendo mas opciones de la api
Envia un mensaje instantaneo al contacto q esta escrito en la caja de texto, tb podemos hacerlo directamente con "direccion[correos protegidos por seguridad de los usuarios].com"
CODE
Private Sub Command1_Click()
msn.InstantMessage Text1.Text
End Sub
Abrir bandeja de entrada
Se abrira en nuest navegador nuestro correo electronico
CODE
Private Sub Command8_Click()
msn.OpenInbox
End Sub
Agregar un contacto
El 0 indica la ventana q por defecto va a 0
CODE
msn.AddContact 0, "direccion[correos protegidos por seguridad de los usuarios].com"
Iniciar sesion desde código
bauto significa si está el inicio automatico activado o no
Añadimos este procedimiento
CODE
Public Sub SignIn(ByVal bAuto As Boolean, Optional ByVal sSignInName As String, Optional ByVal sPassword As String)
If bAuto = True Then
msn.AutoSignin
Else
msn.SignIn 0, sSignInName, sPassword
End If
End Sub
y para iniciar sesion llamamos al procedimiento con
CODE
signin "direccion", "password"
Estos son algunos ejemplos de procedimientos de la api
Hay muchas mas que podemos utilizar para verlos solo debemos hacer click con el derecho sobre el codigo de nuestro programa e ir a examinador de objetos o ir a View --> Object Browser
para saber como utilizar como procedimiento, propiedad o evento solo hay q hacer click sobre el y en la parte inferior de la ventana nos indica el metodo de uso. En la columna izquierda aparece cada grupo separado con sus propiedades.
Explicación de las demas propiedades
Propiedades de IMessengerGroup
AddContact -> añadir contacto al grupo
Name -> ver el nombre del grupo
RemoveContact -> remover contacto del grupo
Propiedades de IMessengerConversationWnd (Ventana de Conversación)
AddContact -> añadir contacto
Close -> cerrar ventana
Contacts -> contactos en una conversación
History -> muestra el log de la ventana
hWnd -> devuelve la ventana
IsClosed -> indica si la ventana está cerrada
Cada uno de las anteriores tienen mas propiedades pero no son de uso común.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Eventos de la Api
Los eventos están indicados en en el examinador de objetos explicado anteriormente con el dibujo de un rayo.
Ejemplos de eventos
Los eventos sirven para detectar cambios de estados, cambios de nick, etc.
Detecta cambio de nick de un contacto
CODE
Private Sub msn_OnContactFriendlyNameChange(ByVal hr As Long, ByVal pMContact As Object, ByVal bstrPrevFriendlyName As String)
Text21.Text = Text21.Text & Now & " " & pMContact.SigninName & " ha cambiado su nick a " & pMContact.FriendlyName & vbNewLine
End Sub
En los eventos si nos fijamos bien en el examinador de objetos aparecen sin el msn delante nosotros debemos colocarlo para que lo detecte los cambios.
Este codigo muestra en una caja de texto que tal contacto se ha cambiado de nick a otro nick.
pmcontact indica el contacto
bstrPrevFriendlyName indica el nick
Detecta el cambio de estado
CODE
Private Sub msn_OnContactStatusChange(ByVal pMContact As Object, ByVal mStatus As MISTATUS)
If pMContact.Status = 10 Then
Text21.Text = Text21.Text & Now & " " & pMContact.SigninName & " ha cambiado su estado a " & "No Disponible." & vbNewLine
End If
End Sub
pmcontact indica el contacto
mstatus indica el estado
pmcontact.status indica su estado
Cada estado está indicado con un numero:
10 no disponible
66 salio a comer
2 en linea
50 al telefono
1 y 6 desconectado
18 ausente
14 vuelvo enseguida
34 ausente
por lo tanto para detectar a q estado se cambia basta con colocar esta condicion
CODE
If pMContact.Status = 1 Then
'detecta que el cambio de estado es a desconectado
End If
Hay muchos mas eventos solo hay que aplicar un poco de conocimiento y leer este tutorial
Codigo para cambiar el avatar
hay q declarar esta constante en el general del codigo
CODE
Private Const MCONTACTPROP_USERTILE_PATH As Long = 2 'constante para cambiar el avatar
Con el siguiente código podemos cambiar el avatar
CODE
Set oMessenger = New MessengerAPI.Messenger
oMessenger.MyProperty(MCONTACTPROP_USERTILE_PATH) = Text1.Text
En text1.text debería estar la ruta de la imagen Ej: c:\ola.jpg
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Roba Emoticonos y Avatares
Mucha gente me ha preguntado q como se hace un roba emoticonos y avatares no voy a poner codigo pero explicare donde se encuentran dichas imagenes y como conseguirlas de un metodo facil.
Antes que nada donde se localizan estas imagenes?
CODE
C:\Documents and Settings\vcd\Configuración local\Archivos temporales de Internet\Content.IE5
donde pone vcd hay q cambiarlo por tu nombre de usuario de windows
pues bien una vez aki hay varias carpetas ahi se encuentran todas las imagenes
las imagenes tienen extension *.bin
para comprobar q son las imagenes simplemente podemos abrir esos archivos con un visor de imagenes y lo comprobaremos
peus haya vamos
añadimos a nuestro proyecto un filelistbox
en la propiedad pattern ponemos *.bin
y usamos este codigo en el form load
CODE
File1.Path = "C:\Documents and Settings\vcd\Configuración local\Archivos temporales de Internet\Content.IE5\NGUOM7B0"
por supuesto cambiaremos lo q está entre comillas por nuestra ruta
ya tendremos al cargar el programa todas los archivos de imagenes listas
lo siguientes pues sería convertir las iamgenes para visualizar eso los dejo en vuestras manos hay muchas formas como pueden ser las librerías png
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Pequeño flood de estados
Enseñaré a hacerlo de forma que no usemos timers simplemente una pekeña funcion llamada pause
la funcion pause es la siguiente, la colocais en un modulo
CODE
Sub Pause(interval)
Current = Timer
Do While Timer - Current < Val(interval)
DoEvents
Loop
End Sub
Como usarla simplemente poner el siguiente codigo
CODE
Pause 2.5
Evidentemente el intervalo de tiempo se puede cambiar
A lo que ibamos como hacer el flood pues con un poco de iamginacion y la funcion pause es muy facil
CODE
Private Sub Command1_Click()
msn.MyStatus = MISTATUS_INVISIBLE
pause 2
msn.MyStatus = MISTATUS_ONLINE
pause 2
msn.MyStatus = MISTATUS_BUSY
pause 2
msn.MyStatus = MISTATUS_AWAY
pause 2
msn.MyStatus = MISTATUS_ONLINE
pause 2
End Sub
Como veis es simplemente cambiando nuestro eestado, evidentemente si quereis podeis cambiar los estados a los que querais.
Si lo que quereis hacer es hacer flood de ventanitas usad los estados solo invisible y offline asi se mostraran las famosas ventanitas popup.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Hacer un detector de bloqueo usando servidores web
El metodo es usando servidores web y en nuestro proyecto un pekeño webbrowser
para ello en nuestro proyecto vamos al menu proyecto / componentes / y añadimos microsoft internet controls
luego simplemente usando este codigo podremos saber su estado real
CODE
WebBrowser1.Navigate "servidor" & "direccion[correos protegidos por seguridad de los usuarios].com"
en servidor os pondre algunos aki
http://osi.hshh.org:8088/msn/
http://www.the-server.net/osi/msn/
http://status.galaxyradioaustria.com:8080/msn/
http://mightymichelob.tcworks.net:8080/msn/
http://www.eliott-ness.com:2324/msn/
y por supuesto en direccion va la direccion de nuestro contacto a comprobar
una vez ejecutado nos aparece en el pekeño navegador el estado real del contacto. RECORDAD QUE DEBIDO A LA OPCION PRIVACIDAD ESTO NO FUNCIONA AL 100%
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Por mi parte creo q ya está todo lo básico estoy abierto a sugerencias y peticiones siempre que esten en mi mano, en proximos dias creare un proyecto igual que el anterior pero para Visual Basic .NET con .NET FrameWork 2.0 para los interesados en este lenguaje.
Si no les anda y les da un error como este:
RuntimeError '2130705634 (8100031e)'
Method 'el metodo que es usado' of object 'Imessenger3' failed
Puede ser por varias Razones
1º
Te faltan Runtimes , bajalas de
http://download.microsoft.com/downlo...vbrun60sp5.exe
2º
No iniciaste sesion en MSN
3º Tu windows es XP y tiene el Windows Messenger 4.7 instalado. Por lo cual debemos desinstalarlo tecleando
En Inicio ejecutar esto:
RunDll32 advpack.dll,LaunchINFSection %windir%\inf\msmsgs.inf,BLC.Remove
Luego Instalas el Msn 5.1 que puede ser bajado de:
http://www.messengeradictos.com/?sec...es%20Messenger
4º No declaraste las apis ni pusistes las referencias
Espero que les sirva
Escrito para Canal Visual Basic por Facundo