2010-12-07 11 views
5

Tengo una aplicación Delphi (2007), que es sólo un EXE estándar, y me gustaría añadir una interfaz COM para él. Ya tengo un dll COM que exporta varios objetos COM y esto está funcionando perfectamente. Sin embargo, cuando me trató de insertar la lógica COM del DLL (es decir, las "exportaciones" y "{$ R * .tlb}" y los usos pertinentes) en el archivo DPR del EXE todo compila perfectamente, pero se niega a registrar cuando llamo regsvr32 myname.exeCómo escribir un archivo EXE que es también un servidor COM en Delphi

También intenté crear una aplicación VCLForms completamente nueva y agregarle un AutomationObject a través de los asistentes IDE, pero Delphi no parece querer que lo haga ya que no hay componentes activosx disponibles.

¿Es incluso posible hacer lo que intentar? Si es así, ¿alguien tiene alguna idea sobre lo que podría estar yendo mal?

Gracias

+0

¿Está ejecutando en Windows de 64 bits? Vista/7? –

+0

Sí, estoy corriendo Windows 7 64 bits – Steve

+0

parece que tienes tu respuesta. Mi punto es que en Windows de 64 bits tienes que trabajar un poco para obtener la versión de 32 bits de regsvr32. Por supuesto, no entendí que, dado que este es un exe en lugar de un dll, no necesitas un programa separado para alojar el código para hacer un autoregistro. –

Respuesta

7

No estoy seguro de las obras regsvr32, es necesario ejecutar el app.exe/regserver o app.exe/unregserver.

+0

De hecho, simplemente ejecute su aplicación con/regserver o/unregserver. Todo esto se maneja en la unidad ComServ.pas. –

+0

Brillante. Gracias. Está funcionando perfectamente ahora. – Steve

1

está exportando su exe DllRegisterServer y DllUnregisterServer?

+0

Sí lo hace. Me di cuenta de que regsvr32 no muestra el diálogo de registro exitoso. De hecho, solo muestra un reloj de arena durante unos segundos y luego sale. – Steve

+0

¿cuál es el valor de retorno DllRegisterServer entonces? – Remko

+0

No lo sé, pero como Richard Chamberlain señaló el error de mis costumbres, no voy a intentar averiguarlo. Gracias por tu ayuda de todos modos. – Steve

Cuestiones relacionadas