Ir al contenido principal

Crear una DLL (COM) en Visual Studio C# para que sea visible desde Power Builder (PB)

Voy a explicar los pasos para poder crear una DLL en C# usando Visual Studio, y que dicha DLL pueda ser usada desde otro lenguaje de programación, en este caso Power Builder (PB). Como digo, podrá ser utilizada desde cualquier otro lenguaje de programación, porque la DLL será creada como un componente COM.

Presupongo que el lector ya sabe crear, compilar y ejecutar un proyecto vació y básico desde ambos lenguajes :)

 

En Visual Studio:

Creamos un nuevo proyecto C# para Windows de tipo Biblioteca de clases, y ponemos correctos (o si prefieres puedes dejar los nombres por defecto) el nombre de fichero y nombre de clase que establece Visual Studio por defecto.

Abrimos las propiedades de nuestro proyecto -> Aplicación -> Información de ensamblado... -> Marcar el checkbox de "Crear ensamblado visible a través de COM"

Volvemos de nuevo a la pantalla principal de las propiedades, ahora nos vamos a Firma, marcamos "Firmar el ensamblado" y nos creamos una nueva firma.

Dejamos el código fuente de la clase de la siguiente manera (en negrita marco lo más importante):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Test
{

 

   [Guid("F8E03FC1-3367-4d4a-AD49-EF3EAEBFA6EC")]
   [InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface _CTest
{
void Test();
void Test2();

}
[Guid("F8E03FC1-3367-4d4a-AD49-EF3EAEBFA6EC")]
    [ClassInterface(ClassInterfaceType.None)]

   [ProgId("Test.CTest")]
public class CTest : _CTest
{

public void Test()
{
MessageBox.Show("Hola, yo soy Test()");
}

public void Tes2t()
{
MessageBox.Show("Hola, yo soy Test2()");
}

}
}

Los códigos de GUID se pueden obtener con alguna de las herramientas de Microsoft Visual Studio, o bien desde alguna web tipo http://www.guidgen.com/

Una vez hecho esto, compilamos el proyecto y nos aseguramos que no haya ningún error.

Lo más probable es que queramos distribuir la DLL en otros PCs, junto al programa realizado en Power Builder, para ello pasaremos a agregar/crear un nuevo proyecto instalador tipo "Otros tipos de proyectos" -> "Instalación e implementación" -> "Instalador de Visual Studio" -> "Proyecto de instalación"

En el nuevo proyecto instalador, agregaremos los resultados del proyecto de la clase de la DLL; y lo más importante, en las propiedades del resultado principal de dicha clase, especificaremos la propiedad Register a vsdrpCOM.

Generamos el nuevo proyecto instalador, y pasaríamos a instalar la DLL en el equipo.

 

Nota: Es posible que en Visual Studio, cuando generemos el instalador, se nos presente un mensaje tipo Visual Studio registry capture utility has stopped working o Visual Studio registry capture utility dejo de funcionar, para solucionarlo:

  1. Localiza regcap.exe en: C:Program FilesMicrosoft Visual Studio 9.0Common7ToolsDeployment (o similar)

  2. Botón derecho sobre el fichero y selecciona "Propiedades".

  3. Selecciona la pestaña de "Compatibilidad"

  4. Marca el checkbox de modo de compatibilidad y selecciona Windows Vista SP2.

  5. Marca el checkbox de ejecutar como administrador.


 

 

En PowerBuilder:

Simplemente instanciaremos en nuestro código fuente la DLL COM de la siguiente manera:
    iole = CREATE OLEObject
li_rc = iole.ConnectToNewObject("Test.CTest")
IF li_rc <> 0 THEN
DESTROY iole
END IF

Y... ¡listo! :)

 

Webs de referencia:

  1. http://anvil-of-time.com/wordpress/powerbuilder/powerbuilder-accessing-c-classes-via-com-to-capture-a-screenshot/

  2. http://stackoverflow.com/questions/3360160/how-do-i-create-an-activex-com-in-c

  3. http://www.guidgen.com/

  4. http://stackoverflow.com/questions/2334005/visual-studio-registry-capture-utility-has-stopped-working-error-compiling-c-sh


 

 

 

 

Comentarios

  1. Buen artículo.

    ¡Gracias!, muy útil, me salvó la vida.

    ResponderEliminar
  2. Excelente, eres un genio.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Hacer una pausa en un fichero por lotes batch (bat o cmd)

En consola de Windows (antiguamente Ms-Dos) desde siempre se ha podido hacer una pausa, esperando confirmación del usuario. El comando en cuestión es: pause Si escribimos pause en nuestra consola veremos que la consola se queda pausada hasta que pulsamos una tecla. Esto es útil en ficheros batch (ya sean .bat o .cmd) para hacer pausas controladas entre distintos comandos, a la espera que el usuario pulse alguna tecla para continua. Pero, ¿qué ocurre si queremos una pausa de cierto número de segundos y luego continúe el proceso automáticamente ? No hay ningún comando que lo haga, pero haciendo el siguiente "truco" (hace un ping a una URL especificando el número de segundos como timeout) lo podremos conseguir ping -n 10 localhost > null Simplemente cambiar el 10 por el número de segundos que queráis, y ya tendréis en consola (o msdos) una pausa de N segundos, y luego el proceso continuará automáticamente.  

jQuery Cycle Plugin - Transiciones animadas de imágenes (slideshow)

jQuery Cycle plugin proporciona un mecanismo de hacer transiciones animadas de imágenes . Su implementación está basada en el InnerFade Plugin de Torsten Baldes, el Slideshow Plugin de Matt Oakes, y el jqShuffle Plugin de Benjamin Sterling. El plugin soporta pausas al pasar el ratón por encima de la imágen, paradas automáticas, retrollamadas (callbacks) antes y después, disparadores (triggers) y una gran cantidad de efectos para las trasiciones. La última versión estable (2.34), publicada en esta misma semana, requiere, como mínimo, la versión 1.2.3 de jQuery . Es un plugin muy ligero, tan solo ocupa 18 KB en su versión para entornos de producción. Como casi todo en jQuery , es muy fácil de usar. Aquí pongo un breve ejemplo básico: HTML: [sourcecode language="html"] [/sourcecode] CSS: [sourcecode language="css"] .pics { height: 232px; width: 232px; padding: 0; margin: 0; } .pics img { padding: 15px; border: 1px solid #ccc;

Instalación y configuración del foro phpBB3

Voy a intentar enumerar y describir el proceso de instalar, configurar, e incluso personalizar algunos aspectos del famoso foro open-source phpBB . Lo primero es descargarlo desde aquí https://www.phpbb.com/downloads El enlace anterior descargará phpBB3 en inglés (aunque luego se pueden instalar otros idiomas). Pero si lo queremos ya directamente en español lo descargaremos desde la web oficial de phpBB3 en español http://www.phpbb-es.com/ . Siendo la URL de descarga: http://www.phpbb-es.com/foro/descargas.php Lo descomprimiremos en nuestro directorio web público a Internet. Por ejemplo, en caso de usar XAMPP para Windows, lo descomprimiremos en C:xampphtdocsphpbb3 Ahora desde nuestro navegador web accederemos a la URL donde lo hemos instalado, siguiendo nuestro ejemplo local con Windows XAMPP sería: http://localhost/phpbb3 Aparecerá una venta similar a esta: Donde seleccionaremos la pestaña "Install" e iremos siguiendo los pasos uno a uno hasta que esté instalado con la conf