• Viernes 3 de Mayo de 2024, 05:25

Autor Tema:  Interfaz Con Cualquier Programa  (Leído 2831 veces)

yamobe

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Interfaz Con Cualquier Programa
« en: Jueves 14 de Septiembre de 2006, 21:30 »
0
Hola

Estoy intentando accesar los objetos de un programa llamado nxview

he visto anteriormente esto en visual basic (interfaz entre excel y autocad) y tengo entendido que se hace de la siguiente manera:

en visual c++ menu->proyecto->agregar referencias, pestaña COM

ahí elijo la librería ( en este caso tengo un dll y un ocx (que no se lo que es))

Luego en el visor de objetos, puedo ver claramente todas las funciones que existen en la clase de nxview, sin embargo no se como hacer las siguientes cosas:

_declarar lo necesario para poder usar los objetos, clases o funciones
_no se como usar las funciones

Sería perfecto si alguien me pudiera enseñar un ejemplo donde se haga esto... no puedo encontrar en ningún lado!! O que me lo explicara como si fuera un niño de 5 años

Saludos
Yamobe

SteelX

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
Re: Interfaz Con Cualquier Programa
« Respuesta #1 en: Jueves 14 de Septiembre de 2006, 22:59 »
0
DLL es una libreria de enlace dinamico, para usarla en visual c, creo que ya hay indicaciones por alli, pero por si acaso voy a dar unas.

tendras que incluir el archivo de cabezera para poder usar las dlls, es decir si tienes un DLL viene con un archivo de cabecera que tiene las interfaces para poder usas las librerias.
Deberas incluir el PATH donde esta la librareria en(un .Lib )project->properties->linker->general->Additional library directories

y en linker->input->Additional Dependencies colocas el nombre del .lib al que pertenece la libreria.
ejem

xys.dll
xys.h
xys.lib

-----------------------------------------------------------------------------------
ocx tambien son librerias. se conocen como activeX solo se anhade el ocx y el visual studio tiene la capacidad de crear las clases y demas interfaces para utilizar.
Ya es cuestion tuya en que parte del programa lo quieras usar, solo debes incluir el archivo de cabecera que genera el visual estudio
Inside the code

yamobe

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Interfaz Con Cualquier Programa
« Respuesta #2 en: Viernes 15 de Septiembre de 2006, 00:06 »
0
ok,  entonces logré generar un .cpp y un .h a partir del dll

tengo lo siguiente en el .h:

class INxViewRunTimeObj : public COleDispatchDriver
{
public:
   INxViewRunTimeObj() {}      // Calls COleDispatchDriver default constructor
   INxViewRunTimeObj(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
   INxViewRunTimeObj(const INxViewRunTimeObj& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}

// Attributes
public:

// Operations
public:
   void CreateMyOpenSpace();
};

como uso la funcion CreateMyOpenSpace??
Lo que no se es la gramática del código... a ver si me pueden ayudar :)

SteelX

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
Re: Interfaz Con Cualquier Programa
« Respuesta #3 en: Viernes 15 de Septiembre de 2006, 01:09 »
0
hola yamobe


Código: Text
  1.  
  2. como ves en tu clase la funcion void CreateMyOpenSpace(); //public:
  3.  
  4.  

esta declarada publica, asi que la puedes usar decladando un objeto de la clase
INxViewRunTimeObj. Que en este caso hereda tambien de la clase COleDispatchDriver
pero como veras tiene un constructor por defecto , que no recibe ningun parametro

asi que solo tienes que incluir el .h en el .cpp que vayas a usar la funcion.
declarar un objeto de la clase
Código: Text
  1.  
  2. INxViewRunTimeObj objeto;
  3. objeto.CreateMyOpenSpace();
  4.  
  5.  
como esta void y no tiene parametros. ni recibe ni retorna nada..
Inside the code

yamobe

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Interfaz Con Cualquier Programa
« Respuesta #4 en: Viernes 15 de Septiembre de 2006, 14:58 »
0
lo raro es que cuando hago eso me sale:

error C2011: 'INxViewRunTimeObj' : 'class' type redefinition

:(

O sea, estoy usando un MFC, lo raro es que si lo pongo el include en el .h, me sale ese error, pero si lo pongo en el cpp si me funciona

Pero claramente por orden prefiero poner todo en el .h... porque será?

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Interfaz Con Cualquier Programa
« Respuesta #5 en: Viernes 15 de Septiembre de 2006, 15:31 »
0
tienes la definicion de ese tipo duplicada en una o mas librerias que estas utilizando o bien en los encabezados ( .h).
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

yamobe

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Interfaz Con Cualquier Programa
« Respuesta #6 en: Viernes 15 de Septiembre de 2006, 16:55 »
0
gracias cabros,  problema solucionado..

ahora me falta el detalle que no se que hacen todas las funciones del dll, pero eso será tarea mia nomas...

para dejarlo dicho... para abrir un Dll creado con OLE/COM desde visual c++ 6.0

Class wizard/add class/from type library
se elige el dll y listo, te crea el .h y .cpp solito

yamobe

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Interfaz Con Cualquier Programa
« Respuesta #7 en: Domingo 17 de Septiembre de 2006, 14:30 »
0
Uff
estoy realmente complicado con lo que quiero hacer, bueno tengo el .h y el .cpp derivados del dll del software nxview

el .h generado es mas o menos asi:

Código: Text
  1. class INxViewRunTimeObj : public COleDispatchDriver
  2. {
  3. public:
  4. INxViewRunTimeObj() {} // Calls COleDispatchDriver default constructor
  5. INxViewRunTimeObj(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
  6. INxViewRunTimeObj(const INxViewRunTimeObj& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}
  7.  
  8. // Attributes
  9. public:
  10.  
  11. // Operations
  12. public:
  13. long HandleInitialize(short sRenderOpt, short sWindowOpt, const VARIANT& vRenderWnd, const VARIANT& vParentWnd, const VARIANT& vRenderInst, LPCTSTR bstrFile, short sContainer);
  14. void HandleRenderScene();
  15. long HandleNewDocument();
  16.  
  17. etc... miles de funciones
  18.  

Existe alguna metodologia o procedimiento normalmente usado para saber para que sirve cada funcion? porque estoy complicadisimo... no logro hacer funcionar nada...

Ojala alguien me pueda dar una guia

saludos
Yamobe
Esto igual es lo que hacen un poco los hackers

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Interfaz Con Cualquier Programa
« Respuesta #8 en: Domingo 17 de Septiembre de 2006, 14:52 »
0
Y si ... ingenieria reversa ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

yamobe

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Interfaz Con Cualquier Programa
« Respuesta #9 en: Domingo 17 de Septiembre de 2006, 15:28 »
0
Cita de: "Eternal Idol"
Y si ... ingenieria reversa ...
Me podrias explicar un poco o dar alguna pagina que me guie? Gracias :)

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Interfaz Con Cualquier Programa
« Respuesta #10 en: Domingo 17 de Septiembre de 2006, 16:55 »
0
Cita de: "yamobe"
estoy realmente complicado con lo que quiero hacer, bueno tengo el .h y el .cpp derivados del dll del software nxview

Si ya tienes los fuentes, lo unico que lograras con Ingenieria Inversa sera complicarte la vida para nada.

1- trata de conseguir un manual , contacta a las personas de nxview a ver si te pueden ayudar
2- trata de conseguir codigo de otras personas que hayan usado la libreria y trata de entenderlo, de igual forma sino lo entiendes  trata de contactar al que lo hizo
3- sino consigues el manual ni codigo de otras personas estudia le codigo, no sera facil... pero no veo mas alternativas
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io