Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: shaggikpo en 8 Diciembre 2009, 02:20 am



Título: Error en tiempo de ejecucion: El componente activex no puede crear el objeto
Publicado por: shaggikpo en 8 Diciembre 2009, 02:20 am

Desde el ide muestra el MSGBOX pero no funciona la funcion y cuando genero el exe y llamo la dll me da el erro del titulo le dejo el code:
Ojala puedan ayudarme

Proceso.exe
Código
  1. Private Declare Function DllMain Lib "Loader.dll" () As String
  2.  
  3. Private Sub Command1_Click()
  4. DllMain
  5. End Sub
  6.  
Loader.dll
Código
  1.  
  2.  
  3.  
  4.  
  5.  
  6. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  7.  
  8. ' Funciòn APi para buscar Ventanas de Windows
  9. Public Declare Function FindWindow _
  10.    Lib "user32" _
  11.    Alias "FindWindowA" ( _
  12.        ByVal lpClassName As String, _
  13.        ByVal lpWindowName As String) As Long
  14.  
  15.  
  16. 'Para finalizar dicha ventana
  17. Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
  18.                 ByVal hwnd As Long, _
  19.                 ByVal wMsg As Long, _
  20.                 ByVal wParam As Long, _
  21.                 lParam As Any) As Long
  22.  
  23. Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
  24.     ByVal hwnd As Long, _
  25.     ByVal lpOperation As String, _
  26.     ByVal lpFile As String, _
  27.     ByVal lpParameters As String, _
  28.     ByVal lpDirectory As String, _
  29.     ByVal nShowCmd As Long) As Long
  30.  
  31.  
  32. Public Sub Comprobar()
  33. Dim clase As String
  34. clase = ThunderRT6FormDC
  35. Dim ret As Long
  36.  
  37.    ' busca la ventana y retorna el Handle
  38.    ret = FindWindow(clase, "MuPaysandú V 1.0.59")
  39.  
  40.    'si retorna distinto _
  41.      de 0 es porque la encontró
  42.    If ret <> 0 Then
  43.                ' Finaliza la ventana
  44.             Log ("Launcher cerrado corectamente con el HWD " & ret)
  45.            SendMessage ret, "&H112", "&HF060&", ByVal 0
  46.  
  47.  
  48.  
  49.        Else
  50.        Log ("Launcher no encontrado.")
  51.        ret = FindWindow("MU", vbNullString)
  52.        If ret <> 0 Then
  53.            SendMessage ret, "&H112", "&HF060&", ByVal 0
  54.            Log ("Procediendo a cerrar el Cliente.")
  55.            Log ("Abriendo Launcher.")
  56.            ShellExecute ret, "Open", App.Path & "\MU.exe", vbNullString, "0", "1"
  57.            Else
  58.            Log ("MuPaysandu No encontrado.")
  59.        End If
  60.    End If
  61.  
  62. End Sub
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69. Public Sub Log(Razon As String)
  70.    Open App.Path & "\log.txt" For Append As 1
  71.    Print #1, "[" & Date & "] " & Razon
  72.    Close #1
  73. End Sub
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81. Public Function DllMain() As String
  82.         MsgBox "DLL CARGADA"
  83.          Comprobar
  84. End Function


Título: Re: Funciones de Apis no me funcionan en una dll
Publicado por: LeandroA en 8 Diciembre 2009, 02:52 am
que es lo que no te funciona?.

SendMessage ret, WM_SYSCOMMAND, SC_CLOSE, ByVal 0

cierra la ventana pero no mata el proceso si la ventana no es la unica en ejecucion.

seguro que este es el nombre de clase ThunderRT6FormDC mira que si la aplicacion esta en ide es otro el classname.

Saludos.


Título: Re: Funciones de Apis no me funcionan en una dll
Publicado por: shaggikpo en 8 Diciembre 2009, 02:54 am
Si el cass esta bien ya lo revise
el program cierra la primera ventana y lanza el proceso pero si inicio el proceso solo y la primera ventana no esta preceste el proceso actual debrei acerrarse y abier el MU.exe


Título: Re: Error en tiempo de ejecucion: El componente activex no puede crear el objeto
Publicado por: Dessa en 8 Diciembre 2009, 10:18 am
Solo una acotación, la clase de los formularios (ventanas) echos en VB se llaman "ThunderFormDC" si se ejecutan desde el IDE, pero esta clase cambia por "ThunderRT6FormDC" si  se ejecuta desde el exe compilado.




Título: Re: Error en tiempo de ejecucion: El componente activex no puede crear el objeto
Publicado por: shaggikpo en 8 Diciembre 2009, 23:08 pm
Lo dices tan seguro pero no es asi sucede que si ves la class de la vantana de el exe compilado el cual se busca es la que yo puse aqui un a prueba si se dejan de decir eso ya que ese no es el problema.

(http://img51.imageshack.us/img51/8033/dibujoesd.png)


Título: Re: Funciones de Apis no me funcionan en una dll
Publicado por: Dessa en 9 Diciembre 2009, 02:54 am
seguro que este es el nombre de clase ThunderRT6FormDC mira que si la aplicacion esta en ide es otro el classname.

shaggikpo: No estoy diciendo que es tu problema, estoy haciendo una acotación sobre el tema de la clase del form de vb:

"ThunderFormDC" si se ejecutan desde el IDE,
"ThunderRT6FormDC" si se ejecuta compilado.

Código:
Option Explicit

Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Private Sub Form_Load()
 
  Me.AutoRedraw = True: Me.FontBold = True

  Dim ClassName As String: ClassName = Space$(255)
  Dim ret As Long: ret = GetClassName(Me.hwnd, ClassName, 255)
  Me.Print Left$(ClassName, ret)

End Sub



PD: me pareció importante pero perdón si te molestó.