elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Exe ActiveX: Componente ActiveX no puede crear... No se ha definido el tipo...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Exe ActiveX: Componente ActiveX no puede crear... No se ha definido el tipo...  (Leído 3,857 veces)
‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Exe ActiveX: Componente ActiveX no puede crear... No se ha definido el tipo...
« en: 8 Febrero 2010, 09:03 am »

Que onda, como estan  :)

Yo aca con una consulta  :P

Miren, tengo creado un Exe ActiveX, llamado XEjecutor.

Tengo otro Exe normal que hace uso del ActiveX, pero estoy teniendo una serie de problemas:

Dentro de este exe normal, si escribo:

Código
  1. Dim Ejec_1 As Object
  2.  
  3. Set Ejec_1 = CreateObject("C:\Documents and Settings\DeathWatch\Mis documentos\XEjecutor.exe")

me arroja Error '429' en tiempo de ejecucion :
El componente ActiveX no puede crear el objeto.
Pero igual si en lugar de XEjecutor.exe le cambio el nombre a lasdjflk.exe, me da el mismo error, asi que creo que no este haciendo referencia al archivo.

Por otro lado si escribo:

Código
  1. Sub Main()
  2. ' Aqui, se supone que registro el Exe ActiveX, y aparentemente si lo hace, supongo yo...
  3. Shell ("C:\Documents and Settings\DeathWatch\Mis documentos\XEjecutor.exe /RegServer")
  4. ' Aqui llamo al Sub Prueba
  5. Prueba
  6. End Sub
  7.  
  8.  
  9. Sub Prueba()
  10. ' Aqui instancio al proyecto XProyEjec, a la clase XClsEjec, que se encuentran dentro del ActiveX XEjecutor
  11. Dim Ejec_1 As New XProyEjec.XClsEjec
  12. Set Ejec_1 = New XProyEjec.XClsEjec
  13.  
  14. ' Llamo a un procedimiento llamado Proceso, dentro del ActiveX
  15. Ejec_1.Proceso 1
  16.  
  17. ' y despejo el objeto.
  18. Set Ejec_1 = Nothing
  19.  
  20. End Sub

Pero obtengo Error de compilacion:
No se ha definido el tipo definido por el usuario.

Donde esta mi falla?

Les comento que la idea NO es entrar en VB, a Proyecto - Referencias, porque este exe normal y el exe activex, siempre se van a ejecutar en una maquina diferente.

Me pueden ayudar por favor?

Gracias de antemano  ;)
Un saludo...


En línea

‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: Exe ActiveX: Componente ActiveX no puede crear... No se ha definido el tipo.
« Respuesta #1 en: 28 Febrero 2010, 03:42 am »

Solucionado!!!

Para referencia:
http://foros.solocodigo.com/viewtopic.php?f=143&t=42345



En línea

cobein


Desconectado Desconectado

Mensajes: 759



Ver Perfil WWW
Re: Exe ActiveX: Componente ActiveX no puede crear... No se ha definido el tipo...
« Respuesta #2 en: 28 Febrero 2010, 05:27 am »

Ups recien lo veo a este, pase por el otro foro y vi la solucion que plantearon. Ahora me gustaria comentar algunas cosas, que si no te pasaron te van a pasar. Primero que nada para registrar un COM vas a necesitar privilegios (no se si este es un problema para vos) que utilizando otros metodos, no son necesarios.

Bueno la primer cosa para comentar es que, si bien podes usar la shell, me parece mucho mas limpio invocar 'DllRegisterServer'.

Ejemplo:
Código:
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long

Private Function RegisterLib(ByVal sPath As String) As Boolean
    Dim lLib    As Long
    Dim lProc   As Long

    lLib = LoadLibrary(sPath)
    If Not lLib = 0 Then
        lProc = GetProcAddress(lLib, "DllRegisterServer")
        If Not lProc = 0 Then
            Call CallWindowProc(lProc, 0&, 0&, ByVal 0&, ByVal 0&)
            RegisterLib = True
        End If
        Call FreeLibrary(lLib)
    End If
End Function


Ahora, el problema con este metodo y el de la shell es que ambos utilizan el registro y como comentaba anteriormente puede ser un problema en muchas situaciones.

Hay varias soluciones posibles pero obviamente va a depender de lo que estes haciendo, la primera y mas comun seria simplemente utilizar algun packager (eg: Molebox) , la otra mas standard es (siempre y cuando corras tu programa en XP SP2 o mayor) utilizar un manifest junto con alguna herramienta para automatizar el proceso de creacion como ser Make My Manifest. Por ultimo la que mas me gusta para cosas simples es una clase hecha por Arne Elster que permite crear objetos en base a su ruta, algo asi como lo que querias hacer inicialmente.

Links:

Registration-Free Activation of COM Components
http://msdn.microsoft.com/en-us/library/ms973913.aspx

Make My Manifest
http://mmm4vb6.atom5.com/

CreateObjectFromFile
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=67459&lngWid=-10
En línea

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
explorer.exe - no se puede encontrar el componente « 1 2 »
Windows
wakas 14 8,274 Último mensaje 12 Julio 2011, 16:12 pm
por wakas
[C++] Conversión tipo predefinido <-> tipo definido por usuario
Programación C/C++
dopin 2 1,698 Último mensaje 22 Agosto 2012, 15:04 pm
por dopin
ActiveX component can't create object
Dudas Generales
janventura 2 7,683 Último mensaje 8 Enero 2013, 11:56 am
por janventura
Flash Player ActiveX
Ingeniería Inversa
frangarrob 6 2,264 Último mensaje 9 Agosto 2015, 18:55 pm
por frangarrob
VS2012, ActiveX SQL de VB6 y error APPCRASH ntdll.dll Exception Code: c0000005
.NET (C#, VB.NET, ASP)
okik 0 1,098 Último mensaje 26 Septiembre 2016, 11:44 am
por okik
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines