Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Integrar ActiveX DLL en proyecto EXE

Estas en el tema de Integrar ActiveX DLL en proyecto EXE en el foro de Visual Basic clásico en Foros del Web. Hola a todos. Hemos creado una ActiveX DLL que consistia en una barra de herramientas que luego se podía insertar en otra herramienta de un ...
  #1 (permalink)  
Antiguo 14/09/2007, 04:35
 
Fecha de Ingreso: septiembre-2007
Mensajes: 4
Antigüedad: 16 años, 7 meses
Puntos: 0
Integrar ActiveX DLL en proyecto EXE

Hola a todos.

Hemos creado una ActiveX DLL que consistia en una barra de herramientas que luego se podía insertar en otra herramienta de un Sistema de Información Geográfica. Esta DLL consta de cientos de funciones, formularios, etc.

Quisiera añadir a un proyecto independiente, esta DLL ya compilada y que se pueda abrir la barra de herramientas con todos sus formularios, etc.

¿Cómo podríamos hacer esto?
  #2 (permalink)  
Antiguo 14/09/2007, 05:00
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Re: Integrar ActiveX DLL en proyecto EXE

Cita:
Iniciado por artenara Ver Mensaje
Hemos creado una ActiveX DLL
Cita:
Iniciado por artenara Ver Mensaje
Esta DLL consta de cientos de funciones, formularios, etc.
Lo que no entiendo es que si hiciste tan grosa dll no puedas hacer referencia de la misma en vb y usar las CIENTOS DE FUNCIONES.
  #3 (permalink)  
Antiguo 14/09/2007, 05:15
 
Fecha de Ingreso: septiembre-2007
Mensajes: 4
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Integrar ActiveX DLL en proyecto EXE

Porque se desarrollo inicialmente para integrarla en otra aplicación de ArcGis (no se si te suena) que sólo permitía añadirle herramientas de esta manera.

Ahora quisieramos ejecutarla por separado, haciendo uso de otra aplicación y necesitamos un EXE y por supuesto reprogramar la aplicación es inviable.

He leido que cada vez que se quiere usar una función hay que declarala y tal. No hay ninguna manera de añadir el componente y que funcione autónomamente?

Gracias
  #4 (permalink)  
Antiguo 14/09/2007, 09:05
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Re: Integrar ActiveX DLL en proyecto EXE

Cita:
Iniciado por artenara Ver Mensaje
Porque se desarrollo inicialmente para integrarla en otra aplicación de ArcGis (no se si te suena) que sólo permitía añadirle herramientas de esta manera.

Ahora quisieramos ejecutarla por separado, haciendo uso de otra aplicación y necesitamos un EXE y por supuesto reprogramar la aplicación es inviable.

He leido que cada vez que se quiere usar una función hay que declarala y tal. No hay ninguna manera de añadir el componente y que funcione autónomamente?

Gracias
mmmm nunca vi una dll que te genere un componente en un proyecto en tiempo de desarrollo. (si eso es lo que te referis).

Tenes dos opciones:

1- Declarar publicamente la funcion que queres usar haciendo mension a la dll. seria algo asi:

Código:
Public Declare Function LaFuncion Lib "LaDLL.dll" (variables de entrada para la funcion)
2- Referenciarla:
Código:
Proyecto--->Referencias...--->Examinar... ---> Buscas la dll
PD: Suponiendo que no conozcas las funciones que posee la DLL (lo mas probable) podes bajarte gratuitamente el programa "DLLfunctions" el cual te lista las funciones que posee cualquier DLL (el unico problema que no te dice para que sirven y mucho menos las variables de entrada).
  #5 (permalink)  
Antiguo 14/09/2007, 10:15
 
Fecha de Ingreso: septiembre-2007
Mensajes: 4
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Integrar ActiveX DLL en proyecto EXE

El problema que encuentro es que la DLL es muy densa, con muchísimas funciones. Además, la dll es una especide de "menú" desplegable con formularios. En sí, lo que queremos reproducir es este menú con todos sus formularios y opciones en un EXE que lleve más opciones, claro.

El problema que yo encuentro es precisamente, que la DLL no es una pila de funciones sino prácticamente un programa autónomo, salvo que el archivo matriz es un class module donde le indicas el número de ítems que va a tener el menú y de ahí se llama a otros class modules donde se indican los submenús y de ahí se van llamando a programas, formularios, clases, etc etc.

Esto es posible sin tener que reprogramar?
  #6 (permalink)  
Antiguo 14/09/2007, 10:55
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Re: Integrar ActiveX DLL en proyecto EXE

Cita:
Iniciado por artenara Ver Mensaje
El problema que encuentro es que la DLL es muy densa, con muchísimas funciones. Además, la dll es una especide de "menú" desplegable con formularios. En sí, lo que queremos reproducir es este menú con todos sus formularios y opciones en un EXE que lleve más opciones, claro.

El problema que yo encuentro es precisamente, que la DLL no es una pila de funciones sino prácticamente un programa autónomo, salvo que el archivo matriz es un class module donde le indicas el número de ítems que va a tener el menú y de ahí se llama a otros class modules donde se indican los submenús y de ahí se van llamando a programas, formularios, clases, etc etc.

Esto es posible sin tener que reprogramar?
Subi la DLL y probamos, no se puede hacer algo en el aire
  #7 (permalink)  
Antiguo 17/09/2007, 01:41
 
Fecha de Ingreso: septiembre-2007
Mensajes: 4
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Integrar ActiveX DLL en proyecto EXE

Toda la aplicación no te la puedo subir porque ocupa muchísmo además de que es una aplicación de la empresa donde trabajo.

Te pongo el código de el primer class module del que se derivan todas las llamadas a todo el resto de modules, class modules y formularios. A ver qué te parece.




'Implement the IToolBarDef interface
Implements IToolBarDef
Private Property Get IToolBarDef_Caption() As String
' Set the string that appears as the toolbar's title
IToolBarDef_Caption = "RADIOGIS_WSN"
End Property

Private Sub IToolBarDef_GetItemInfo(ByVal pos As Long, ByVal itemDef As IItemDef)
' Define the commands that will be on the toolbar. The 1st command
' will be the custom command MyCustomTool. The 2nd and 3rd commands will
' be the builtin AddData and Save commands.
' ID is the ProgID of the command. Group determines whether the command
' begins a new group on the toolbar
Select Case pos
Case 0
itemDef.ID = "RADIOGIS.CalcularMenu"
itemDef.Group = False
Case 1
itemDef.ID = "RADIOGIS.bdmenu"
itemDef.Group = False

Case 2
itemDef.ID = "RADIOGIS.pantallamenu"
itemDef.Group = False
Case 3
itemDef.ID = "RADIOGIS.WsnMenu"
itemDef.Group = False

Case 4
itemDef.ID = "RADIOGIS.ubicacion"
itemDef.Group = False
Case 5
itemDef.ID = "RADIOGIS.ayudamenu"
itemDef.Group = True
Case 6
itemDef.ID = "RADIOGIS.calcula_cob2"
itemDef.Group = True
Case 7
itemDef.ID = "RADIOGIS.Calcula_sis2"

Case 8
itemDef.ID = "RADIOGIS.Calcula_best2"

Case 9
itemDef.ID = "RADIOGIS.Calcula_den2"
itemDef.Group = True
Case 10
itemDef.ID = "RADIOGIS.Calcula_map2"

Case 11
itemDef.ID = "RADIOGIS.pintar"
itemDef.Group = True
Case 12
itemDef.ID = "RADIOGIS.borra_capas2"
itemDef.Group = True
End Select
End Sub

Private Property Get IToolBarDef_ItemCount() As Long
' Set how many commands will be on the toolbar
IToolBarDef_ItemCount = 13
End Property

Private Property Get IToolBarDef_Name() As String
' Set the internal name of the toolbar.
IToolBarDef_Name = "RADIOGIS_WSN"

A mí sólo se me ha ocurrido crear un menú en el nuevo proyecto e ir asociandole a cada opción su class module correspndiente y agregarle todo el código de la DLL y compilarlo todo como un único proyecto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:12.