Guia msn en VB

Iniciado por VirucKingX, 27 Diciembre 2006, 01:31 AM

0 Miembros y 1 Visitante están viendo este tema.

VirucKingX

encontre esta guia que explica algunos trucos y la quiero compartir con ustedes :

CitarACERCA DE: La mayor parte de este tutorial está localizada en la MSDN de Microsoft. Esto es una traducción con códigos adjuntos a modo de ejemplo e imágenes ilustrativas.
El código aparece en color azul oscuro, mientras que comentarios y definiciones se mostrarán en verde.
Se requieren conocimientos básicos acerca de la programación en Visual basic 6 y el software necesario para llevar a cabo todas las explicaciones detalladas en este manual.

INICIACIÓN Y ELEMENTOS 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 menú "Proyecto", seleccionamos "Referencias", y en la lista que aparece, debemos buscar y marcar la referencia anteriormente citada.
Declaraciones Principales del objeto:
Option Explicit
Public WithEvents MSN As Messenger
Iniciando la API (se coloca en Form_Load())
Set MSN = New Messenger
Propiedades de uso local:
MyFriendlyName -> Devuelve tu nick.
MyPhoneNumber -> Devuelve tu número de telefono.
MyServiceId -> Devuelve la ID del servicio.
MyServiceName -> Devuelve el nombre del servicio.
MySigninName -> Devuelve el e-mail.
MyStatus -> Devuelve el estado actual.
Usando "msn." podemos averiguar los datos anteriores. Por ejemplo, para averiguar el estado local, usaríamos:
msn.MyStatus
Ejemplos de cambios de estados
msn.MyStatus = MISTATUS_AWAY (Ausente)
msn.MyStatus = MISTATUS_ONLINE (En Línea)
Ejemplo: leer en un TextBox nuestro nick y nuestro email.
Text1.Text = MSN.SigninName & msn.MyFriendlyName
Anteriormente, para cambiar el nick con utilizar MyFriendlyName era suficiente, pero está propiedad actualmente es de sólo lectura por lo que no se puede utilizar así tan fácilmente.
Usando la lista de contactos
Propiedades IMessengerContact:
Blocked -> Valor lógico que devuelve verdadero si un contacto está bloqueado o falso en caso contrario.
FriendlyName -> Devuelve el nick de un contacto.
Las siguiente propiedades son iguales que las locales pero esta vez devuelven los datos de un contacto:

PhoneNumber
Property
ServiceId
ServiceName
SigninName
Status
Declaraciones e iniciación para usar la lista de contactos:
Option Explicit
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 de Messenger
End Sub
Cómo cargar nuestra lista de contactos conectados en un ListBox:
Añadimos el siguiente código en Form_Load():
For Each user In MsgrUIA.MyContacts 'Por cada usuario en la lista de contactos: si está conectado, en linea, ausente, no disponible, etcetera. agrega cada direccion de correo a 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 'También podríamos hacer esto con el nick colocando "user.FriendlyName"
End If
Next
Si queremos que se carguen usuarios conectados y no conectados colocamos lo siguiente en lugar de lo anterior en el Form_Load():
Dim user As IMessengerContact 'Declaramos la variable "user" como contacto del messenger
For Each user In MsgrUIA.MyContacts 'Por cada usuario en la lista de contactos, sea cual sea su estado, agrega su dirección de correo a List1
List1.AddItem user.SigninName 'También podríamos hacer esto con el nick colocando "user.FriendlyName"
Next
EJEMPLOS BÁSICOS
Cambiar el nick llamando a la ventana de Opciones, en la pestaña "General":
Se necesita un TextBox y un CommandButton.
Este método llama a la ventana y envía el texto por la pulsación de "ENTER" mediante "SendKeys".
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.
Envía un mensaje instantaneo al contacto que está escrito en un TextBox. Podríamos hacer esto mismo con un contacto fijo, sin necesidad de que el usuario escribiera nada, usando "direccion@dominio.com".
Private Sub Command1_Click()
msn.InstantMessage Text1.Text
End Sub
Abrir bandeja de entrada de correo:
Se abrirá en nuestro navegador la bandeja de entrada del correo electrónico.
Private Sub Command8_Click()
msn.OpenInbox
End Sub
Agregar un contacto:
El 0 indica la ventana que por defecto va a 0.
msn.AddContact 0, "direccion@dominio.com"
Iniciar sesión desde código:
bAuto significa si el inicio automático está activado o no.
Añadimos este procedimiento, llamado SignIn():
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 sesión, invocamos este procedimiento de la siguiente manera:
SignIn "direccion", "password"
Estos son algunos ejemplos de procedimientos de la API.
Hay muchas más que podemos utilizar. Para verlos, sólo debemos hacer click con el botón derecho sobre el código de nuestro programa e ir a "Examinador de Objetos".
Para saber cómo utilizar cada procedimiento, propiedad o evento, sólo hay que hacer click sobre él y en la parte inferior de la ventana nos indica el método de uso. En la columna izquierda aparece cada grupo separado con sus propiedades.
Explicación de las demás propiedades:
Propiedades de IMessengerGroup
AddContact -> Añade contacto al grupo.
Name -> Ver el nombre del grupo.
RemoveContact -> Eliminar contacto del grupo.
Propiedades de IMessengonversationWnd (Ventana de Conversación)

AddContact -> Añadir contacto.
Close -> Cerrar ventana.
Contacts -> Mostrar los contactos participantes 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 más 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. Sirven por ejemplo para detectar cambios de estados, cambios de nick, etc.
Ejemplos:
Detectar cambio de nick en un contacto
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 detecte los cambios.

Este código muestra en una caja de texto que tal contacto se ha cambiado de nick a otro nick.
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 = Salí 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 que estado se cambia basta con colocar una condición.
If pMContact.Status = 1 Then
'detecta que el cambio de estado es a desconectado
End If
Hay muchos más eventos, sólo hay que aplicar un poco de conocimiento y leer este artículo.
Código para cambiar el avatar
Debemos declarar esta constante en el general del codigo.
Private Const MCONTACTPROP_USERTILE_PATH As Long = 2
Con el siguiente código podemos cambiar el avatar:
Set oMessenger = New MessengerAPI.Messenger
oMessenger.MyProperty(MCONTACTPROP_USERTILE_PATH) = Text1.Text
En Text1.Text debería estar la ruta local de la imágen.
Roba Emoticonos y Avatares:
Esta es la ubicación donde se localizan las imágenes que vemos por MSN Messenger (avatares, emoticonos y demás de nuestros contactos).
C:Documents and SettingsUSUARIOConfiguración localArchivos temporales de InternetContent.IE5
En dicha localización se encuentran varias carpetas, donde están todas las imágenes (las cuales tienen extensión .bin)
Para comprobar que son las imágenes, simplemente podemos abrir esos archivos con un visor de imagenes y lo comprobaremos.
Vamos a crear el roba emoticonos y avatares:
Creamos un proyecto nuevo con un FileListBox, cuya propiedad "Pattern" estableceremos a "*.bin" y añadiumos este código en Form_Load():
File1.Path = "C:Documents and SettingsUSUARIOConfiguración localArchivos temporales de InternetContent.IE5NGUOM7B0"
ya tendremos al cargar el programa todas los archivos de imagenes listas

Lo siguientes pues sería convertir las imágenes para visualizar. Eso lo dejamos en vuestras manos. Hay muchas formas, como pueden ser las librerías PNG.
Pequeño flood de estados
Crearemos un flood sencillo sin usar Timers, simplemente con una función llamada Pause, la cual es esta, que debe ser colocada en un módulo:
Sub Pause(interval)
Current = Timer
Do While Timer - Current < Val(interval)
DoEvents
Loop
End Sub
Para usarla, símplemente debemos poner este código:
Pause 2.5
Evidentemente, el intervalo de tiempo se puede cambiar.
Hacer el flood, con un poco de imaginación y la función Pause es muy fácil.
Private Sub Command1_Click()
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, simplemente cambiamos nuestro estado. Evidentemente, si quereis podéis cambiar los estados a los que querais.
Si lo que quereis hacer es flood de ventanitas, usad sólo los estados "En Línea" y "Sin Conexión", así se mostrarán las famosas ventanitas popup.

Bye


Bye

VirucKingX

Veo que la guia no se puede leer bien aqui les dejo el link para bajarla :

http://rapidshare.com/files/9085202/msn_en_visual_basic.doc.html

Bye


Bye

DrakoX

esta guia es mas quenada para
aprender a controlar la api del MSN,

ya la habia visto hace tiempo x la red

salu2 y gracias

Hans el Topo

pues cmenuda faena mas exo viruckingx, ahora que la has posteado tendre que ponerme manos a la obra


:-( :rolleyes:
 

VirucKingX

Cita de: Hans el Topo en 27 Diciembre 2006, 02:10 AM
pues cmenuda faena mas exo viruckingx, ahora que la has posteado tendre que ponerme manos a la obra


:-( :rolleyes:

me alegra que te haya servido

Bye


Bye

Tyrz

muchas gracias no tenia ni idea de lo que se puede hacer con esto ;D
Web dedicada por completo al surf. Hablamos de tablas de surf, videos de surf, fotos, juegos y mucha información sobre como aprender a surfear, spots famosos como mundaka, pipeline y zonas como vizcaya, surf españa, sopelana y mucho más. Trucos y peligros del surf. A que esperas? Entra en  Surf

Sancho.Mazorka

Esta muy bueno todo eso, gracias. Son re estupidos los de microsoft a enserñarnos a usar eso, xq la mayoria lo usara para hacer lammereadas, aunke los de MS piensan que lo usara gente con buenos fines, no creen ?


Sancho.Mazorka     :P
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



Anteros

man el link de descarga del doc ya no funciona

Tyrz

Para hacer lo de flood de ventanitas no sirve:
msn.mystatus = MISTATUS_OFFLINE
a mi al menos me da error asi que hay que usar:
msn.MyStatus = MISTATUS_INVISIBLE
Saludos
Web dedicada por completo al surf. Hablamos de tablas de surf, videos de surf, fotos, juegos y mucha información sobre como aprender a surfear, spots famosos como mundaka, pipeline y zonas como vizcaya, surf españa, sopelana y mucho más. Trucos y peligros del surf. A que esperas? Entra en  Surf

Alfai

Que tal soy nuevo por aqui, queria saber si hay alguna otra forma de manipular el MSN sin tener que agregar la referencia, por que creo que si no tenemos el Windows Messenger en la PC, la referencia no nos sirve de nada

SAlu2
Alfai