[Source] AuTomsn 2.0 Ayuda con dependencias

Iniciado por [Zero], 27 Diciembre 2007, 22:07 PM

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

[Zero]

Verán, estoy haciendo la nueva version de mi programa (automsn 2.5) y tengo un problema. En my pc va bien, pero cuando se lo paso a otro pc este le da un error:

error '430' en tiempo de ejecucion: Esta clase no admite Automatización o la interfaz esperada

Utilizo el control systray, pero tengo el ocx junto al ejecutable y al ejecutar el exe lo copio a system y lo registro, por lo que dudo que el error se deba a esto.
Leí por ahi que ese error se debía a que instalando el MDAC y registrando las librerias del ADO se podia solucionar, pero no fue asi. En el programa uso la API del msn, y este error creo que tambien se producía en la versión anterior, por lo que no se dónde está el problema. He buscado las dependencias que usa con el OllyDbg, y he comprobado que en el pc que no arranca el exe, existen las librerías que utilza, pero por ejemplo la librería "kernel32.dll" tiene un tamaño diferente, pero esta no puede ser substituída. No sé que hacer, y he buscado por todas partes, por eso recurro a vosotros.
Salu2 y gracias

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

[Zero]

#1
Se me olvidó decir que utilizo XP, y que en el pc del otro es winXP tambien, espero que mem puedan ayudar.
Salu2

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

nhaalclkiemr

Prueva a ejecutarlo en modo depuracion, vamos con el VB sin crear el .ex e final...y asi puedes ver en k linea te falla

Saludos ;)
StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%

[Zero]

No puedo hacer eso, es lo peor, porque a mi me va perfecto, los errores son cuando lo ejecute en otros pc's. Postearé el codigo de la 2.0 para ver si así alguien me puede decir a que se debe el error.

Option Explicit
Dim mensage As String
Dim i As Integer

'Función sleep
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

'Funcion verificar exe
Public Function VerificarExe(ejecutable As String) As Boolean
    Dim strSQL As String
    On Error Resume Next
    strSQL = "Select Name from Win32_Process Where Name = '" & ejecutable & "'"
    VerificarExe = GetObject("winmgmts:").ExecQuery(strSQL).Count
End Function

Private Sub form_load()
Text2.Text = VerificarExe("msnmsgr.exe")

If Text2.Text = "False" Or Text2.Text = "Falso" Then
    MsgBox "Inicia el messenger antes de usar el programa", vbInformation, "Error: Messenger no iniciado"
    End
End If

Dim contacto As IMessengerContact
For Each contacto In messengerapi.Messenger.MyContacts
If contacto.Status <> MISTATUS_OFFLINE Then
    contactos.AddItem contacto.SigninName
End If
Next

automsn1.Height = 6390

If txtcontacto.Text = "" Then 'si no hay contacto seleccionado
    cmdcontar.Enabled = False
    cmdbomb.Enabled = False
    cmdauto.Enabled = False
    cmddesc.Enabled = False
End If
End Sub


Private Sub cmdauto_click()
automsn1.Height = 6390
'auto si
Label3.Visible = True
Text3.Visible = True
Text4.Visible = True
cmdenvtxt.Visible = True
cmdparar.Visible = False
Text5.Visible = False
Label5.Visible = False
Label6.Visible = False
'desconectar no
Label4.Visible = False
cmddesconectar.Visible = False
'bombardear no
cmdbombardear.Visible = False
txtbomba.Visible = False
txtbombas.Visible = False
Label7.Visible = False
Label8.Visible = False
'contar no
Option2.Visible = False
Option1.Visible = False
Text6.Visible = False
Text7.Visible = False
Text8.Visible = False
cmdcuenta.Visible = False
cmdpararcuenta.Visible = False
End Sub

Private Sub cmddesc_click()
automsn1.Height = 6390
'auto no
Label3.Visible = False
Text3.Visible = False
Text4.Visible = False
cmdenvtxt.Visible = False
cmdparar.Visible = False
Text5.Visible = False
Label5.Visible = False
Label6.Visible = False
'desconectar si
Label4.Visible = True
cmddesconectar.Visible = True
'bombardear no
cmdbombardear.Visible = False
txtbomba.Visible = False
txtbombas.Visible = False
Label7.Visible = False
Label8.Visible = False
'contar no
Option2.Visible = False
Option1.Visible = False
Text6.Visible = False
Text7.Visible = False
Text8.Visible = False
cmdcuenta.Visible = False
cmdpararcuenta.Visible = False
End Sub

Private Sub cmdbomb_click()
automsn1.Height = 6390
'bombardear si
cmdbombardear.Visible = True
txtbomba.Visible = True
txtbombas.Visible = True
Label7.Visible = True
Label8.Visible = True
'auto no
Label3.Visible = False
Text3.Visible = False
Text4.Visible = False
cmdenvtxt.Visible = False
cmdparar.Visible = False
Text5.Visible = False
Label5.Visible = False
Label6.Visible = False
'desconectar no
Label4.Visible = False
cmddesconectar.Visible = False
'contar no
Option2.Visible = False
Option1.Visible = False
Text6.Visible = False
Text7.Visible = False
Text8.Visible = False
cmdcuenta.Visible = False
cmdpararcuenta.Visible = False
End Sub

Private Sub cmdcontar_click()
automsn1.Height = 6390
'contar si
Option2.Visible = True
Option1.Visible = True
Text6.Visible = True
Text7.Visible = True
Text8.Visible = True
cmdcuenta.Visible = True
cmdpararcuenta.Visible = False
'auto no
Label3.Visible = False
Text3.Visible = False
Text4.Visible = False
cmdenvtxt.Visible = False
cmdparar.Visible = False
Text5.Visible = False
Label5.Visible = False
Label6.Visible = False
'bombardear no
cmdbombardear.Visible = False
txtbomba.Visible = False
txtbombas.Visible = False
Label7.Visible = False
Label8.Visible = False
'desconectar no
Label4.Visible = False
cmddesconectar.Visible = False
End Sub

'*******AUTOENVÍO*********

Private Sub cmdenvtxt_click()
cmdenvtxt.Visible = False
Text4.Visible = False
Text3.Visible = False
Label3.Visible = False
cmdparar.Visible = True
Text5.Visible = True
Label5.Visible = True
Label6.Visible = True
Timer1.Enabled = True
Timer1.Interval = 1000

Text5.Text = Val(Text3.Text) * 60
messengerapi.Messenger.InstantMessage txtcontacto.Text
mensage = Text4.Text
Clipboard.Clear
Clipboard.SetText mensage
SendKeys "^v"
SendKeys "{ENTER}"
Sleep "10"
End Sub
Private Sub cmdparar_click()
cmdenvtxt.Visible = True
Text5.Visible = False
Label5.Visible = False
Label6.Visible = False
Text4.Visible = True
Text3.Visible = True
Label3.Visible = True
cmdparar.Visible = False
Timer1.Enabled = False
End Sub

Private Sub timer1_timer()
Text5.Text = Val(Text5.Text) - 1
If Val(Text5.Text) = 0 Then
messengerapi.Messenger.InstantMessage txtcontacto.Text
mensage = Text4.Text
Clipboard.Clear
Clipboard.SetText mensage
SendKeys "^v"
SendKeys "{ENTER}"
Sleep "10"
Text5.Text = Val(Text3.Text) * 60
End If
End Sub

'***********DESCONECTAR***********
Private Sub cmddesconectar_click()
Dim i As Integer
Dim x As IMessengerContact
x = txtcontacto.Text
For i = 1 To 300
messengerapi.Messenger.InstantMessage txtcontacto.Text
Clipboard.Clear
Clipboard.SetText " " 'animación muchas veces
SendKeys "^v"
SendKeys "{ENTER}"
If x.Status = MISTATUS_OFFLINE Then
    i = "300"
End If
Next i
DoEvents
End Sub
'********BOMBARDEAR*********
Private Sub cmdbombardear_click()
Dim i As Integer
Dim bombas As Integer
bombas = txtbombas.Text
Dim mensage As String
mensage = txtbomba.Text
For i = 1 To bombas
messengerapi.Messenger.InstantMessage txtcontacto.Text
Sleep "10"
Clipboard.Clear
Clipboard.SetText mensage
SendKeys "^v"
SendKeys "{ENTER}"
Next i
End Sub

'**********CONTAR*********
Private Sub cmdcuenta_click()
If Option1.Value = True Then
Option2.Enabled = False
ElseIf Option2.Value = True Then
Option1.Enabled = False
End If
cmdcuenta.Visible = False
cmdpararcuenta.Visible = True
Timer2.Enabled = True
Timer2.Interval = "1000"
End Sub

Private Sub cmdpararcuenta_click()
Option1.Enabled = True
Option2.Enabled = True
cmdcuenta.Visible = True
cmdpararcuenta.Visible = False
Timer2.Enabled = False
End Sub

Private Sub option1_click()
Text6.Text = "Te quedan"
Text7.Text = "120"
Text8.Text = "segundos"
End Sub

Private Sub option2_click()
Text6.Text = "Llevo ya"
Text7.Text = "120"
Text8.Text = "segundos"
End Sub
Private Sub timer2_timer()
Dim texto1 As String
Dim tiempo As String
Dim texto2 As String

If Option1.Value = True Then
    texto1 = Text6.Text
    tiempo = Text7.Text
    texto2 = Text8.Text

    messengerapi.Messenger.InstantMessage txtcontacto.Text
    SendKeys texto1 + " " + tiempo + " " + texto2
    SendKeys "{ENTER}"
    Text7.Text = Val(Text7.Text) - 1
End If

If Option2.Value = True Then
    texto1 = Text6.Text
    tiempo = Text7.Text
    texto2 = Text8.Text
    messengerapi.Messenger.InstantMessage txtcontacto.Text
    SendKeys texto1 + " " + tiempo + " " + texto2
    SendKeys "{ENTER}"
    Text7.Text = Val(Text7.Text) + 1
End If
End Sub

'*******Demás comandos*******
Private Sub cmdcerrar_click()
automsn1.Height = 4020
End Sub

Private Sub contactos_click()
txtcontacto.Text = contactos.Text

End Sub

Private Sub txtcontacto_change()
cmdauto.Enabled = True
cmdcontar.Enabled = True
cmdbomb.Enabled = True
cmddesc.Enabled = True

If txtcontacto.Text = "" Then
    cmdcontar.Enabled = False
    cmdbomb.Enabled = False
    cmdauto.Enabled = False
    cmddesc.Enabled = False
End If
End Sub


Private Sub cmdrec_click()
automsn1.Height = 4020
txtcontacto.Text = ""
contactos.Clear
Dim contacto As IMessengerContact
For Each contacto In messengerapi.Messenger.MyContacts
If contacto.Status <> MISTATUS_OFFLINE Then
contactos.AddItem contacto.SigninName
End If
Next
End Sub


Espero que a alguien se le ocurra que es lo que puede fallar, ya que esta es la 2.0 pero en la 2.5 que solo haciendo la interfaz, ya me producía ese error.
Salu2

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

LeandroA

hola prova de estas dos formas

primero sin esto

    strSQL = "Select Name from Win32_Process Where Name = '" & ejecutable & "'"
    VerificarExe = GetObject("winmgmts:").ExecQuery(strSQL).Count

si es que te funciona con eso despues prova sin utilizar el api del msn

messengerapi.Messenger.InstantMessage txtcontacto.Text

Dim contacto As IMessengerContact
For Each contacto In messengerapi.Messenger.MyContacts
If contacto.Status <> MISTATUS_OFFLINE Then
contactos.AddItem contacto.SigninName
End If

seguramente una de estas dos son las que ocacionan el problema.

[Zero]

#5
La función de verificar el exe en la versión 2.5 aún no la he utilizado, pero el problema sigue ahí, solo habia echo la interfaz gráfica y lo d que se carguen los contactos en un listbox:

messengerapi.Messenger.InstantMessage txtcontacto.Text

Dim contacto As IMessengerContact
For Each contacto In messengerapi.Messenger.MyContacts
If contacto.Status <> MISTATUS_OFFLINE Then
contactos.AddItem contacto.SigninName
End If


Y dejar de utilizar la API es cargarse mi programa. Pero si el problema es de la API, no se puede adjuntar la o las librerías que dan problemas al exe? Porque el código está bien, no tiene fallos, y en mi pc el programa arranca y funciona perfectamente, pero en otras pc's, (que no digo en todas) hai errores, por eso digo que tiene que ser de alguna dll. Alguna solución???
Salu2

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche