Para saber el estado (conectado, desconectado, ocupado, etc.) de un contacto tienes que tener una cuenta de messenger, estar conectado y que el contacto este en tu lista.
Antes que nada te paso estas tres páginas que poseem infor. Sobre lo que me pedís:
1)
http://www.imppwg.org/ml-archive/IMPP-WG/200105/msg00022.html2)
http://www.exhedra.com/xq/ASP/txtCodeId.28094/lngWid.1/qx/vb/scripts/ShowCode.htm3)
http://www.xtremecomp.com/tips/xttip22.htm4)
http://abstractvb.com/code.asp?A=936Igualmente voy a decirte como lo podrías hacer, simplemente seguí los sig. pasos:
1) Crea un nuevo proyecto (standard exe)
2) Atomaticamente se te crea el form1. Agregale los sig. elementos:
Tipo->Nombre
Label->LabelUsuario
Label->LabelPass
TextBox->TextUsuario
TextBox->TextPass
CommandButton->ButtonConectar
Label->LabelContactos
ListBox->ListContactos
3) Agrega uns referencia a msmsgs.exe
Proyecto->Referencias->selecciona Messenger 1.0 Type Library
4) Pega el sig código:
Option Explicit
Dim Msgrobj As New MsgrObject
Dim MsgrSrvobj As IMsgrService
Private Sub ButtonConectar_Click()
If (Trim(TextUsuario.Text) = "" Or Trim(TextPass.Text) = "") Then
MsgBox "Debe especificar el usuario y el pass.", vbOKOnly, "Error al conectar."
Else
If (Msgrobj.LocalState <> MSTATE_OFFLINE) Then
If (Msgrobj.LocalLogonName <> Trim(TextUsuario.Text)) Then
Msgrobj.Logoff
Do
If (Msgrobj.LocalState <> MSTATE_LOCAL_DISCONNECTING_FROM_SERVER) Then
Msgrobj.Logon Trim(TextUsuario.Text), Trim(TextPass.Text), MsgrSrvobj
Exit Do
End If
Loop
End If
Else
Msgrobj.Logon Trim(TextUsuario.Text), Trim(TextPass.Text), MsgrSrvobj
End If
End If
Do
If (Msgrobj.LocalState <> MSTATE_LOCAL_CONNECTING_TO_SERVER And Msgrobj.LocalState <> MSTATE_LOCAL_FINDING_SERVER And Msgrobj.LocalState <> MSTATE_LOCAL_SYNCHRONIZING_WITH_SERVER) Then
If (Msgrobj.LocalState = MSTATE_OFFLINE) Then
MsgBox "Error al conectarse.", vbOKOnly, "Error."
Exit Do
ElseIf (Msgrobj.LocalState = MSTATE_ONLINE) Then
Estado_Contactos
Exit Do
End If
End If
Loop
End Sub
Private Sub Form_Load()
Form1.Caption = "El estado de mis contactos."
LabelUsuario.Caption = "Usuario:"
LabelPass.Caption = "Password:"
TextUsuario.Text = ""
TextPass.Text = ""
TextPass.PasswordChar = "*"
LabelContactos.Caption = "Contactos:"
ButtonConectar.Caption = "Conectar."
ListContactos.Clear
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set Msgrobj = Nothing
Set MsgrSrvobj = Nothing
End Sub
Private Sub Estado_Contactos()
Dim usr As Messenger.IMsgrUser
For Each usr In Msgrobj.List(MLIST_CONTACT)
Select Case usr.State
Case MSTATE_ONLINE
ListContactos.AddItem usr.FriendlyName & " [En línea]"
Case MSTATE_IDLE
ListContactos.AddItem usr.FriendlyName & " [En línea]"
Case MSTATE_BUSY
ListContactos.AddItem usr.FriendlyName & " [No disponible]"
Case MSTATE_BE_RIGHT_BACK
ListContactos.AddItem usr.FriendlyName & " [Vuelvo enseguida]"
Case MSTATE_AWAY
ListContactos.AddItem usr.FriendlyName & " [Ausente]"
Case MSTATE_ON_THE_PHONE
ListContactos.AddItem usr.FriendlyName & " [Al teléfono]"
Case MSTATE_OUT_TO_LUNCH
ListContactos.AddItem usr.FriendlyName & " [Salí a comer]"
Case MSTATE_OFFLINE
ListContactos.AddItem usr.FriendlyName & " [Sin conexion]"
End Select
Next
End Sub