Page 1 of 1

Dll en .net desde FiveWin

Posted: Mon May 11, 2015 1:07 pm
by jrestojeda
Hola a todos,
Estoy queriendo realizar pruebas de crear una dll en c#.net y luego a dicha dll usarla desde FiveWin.
¿Se puede? En ese caso... cuál sería la metodología.

Dejó un pequeño código de prueba con el código c# y luego el código FiveWin.

Code: Select all

using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Serialization;


namespace MyDll
{
    public class Class1
    {
        int Sumar(int a, int b)
        {
            int nSuma = 0;

            nSuma = a + b;

            return nSuma;
        }
    }
}
 
Este código lo compilo con Visual Studio y genero una dll.

Luego mi idea en FiveWin a grueso modo es la siguiente:

Code: Select all

#include "fivewin.ch"

Function Main()
Local a,b

a:=1
b:=2

nResultado:=Sumar(a,b) // La función Sumar es la que esta en la dll y el resultado debería ser 3

MsgInfo(STR(nResultado))

Return nil
 
¿Cómo se debería invocar a la DLL?

Si bien este ejemplo que quiero lograr es sencillo, la idea es luego poder acceder a WebServices con c# y luego a traves de una dll utilizar esas funciones desde los programas en FiveWin.

¿Alguna ayuda?

Desde ya muchas gracias.
Saludos,

Re: Dll en .net desde FiveWin

Posted: Mon May 11, 2015 4:23 pm
by Antonio Linares

Re: Dll en .net desde FiveWin

Posted: Tue May 12, 2015 11:12 am
by jrestojeda
Antonio,
Muchas gracias por la respuesta. Vamos a ver que sale...
Saludos,

Re: Dll en .net desde FiveWin

Posted: Thu May 14, 2015 2:41 pm
by Joel Andujo
Hola amigo, así quedaría :

Code: Select all

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace MyDll
{
    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsDual)]
    public interface ValidaMetodos
    {
        int Sumar(int a, int b);
    }

    public class Suma:ValidaMetodos
    {
        public Suma()
        {
        }

        public int Sumar(int a, int b)
        {
            int nSuma = 0;

            nSuma = a + b;

            return nSuma;
        }
    }
}
 
- En Propiedades de la Clase -> Información de ensamblado se tiene que seleccionar : Crear ensamblado visible a travéz de COM.
- Se tiene que registrar la dll : regasm.exe MyDll.dll /register /tlb (sales a la ventana de DOS como administrador)

Así se ejecuta desde FWH:

Code: Select all

 // Instanciamos la DLL
 oSuma:=CreateObject('MyDll.Suma')
 TRY
   nResultado:=oSuma:Sumar(5, 5)
   ? nResultado
 CATCH oErr
   ? 'Error al instanciar Dll!!'
 END
 
Espero te ayude, para mi se han abierto un sin número de posibilidades al generar dll expuestas COM y poder usarlas desde nuestro FWH.

saludos
Joel Andujo

Re: Dll en .net desde FiveWin

Posted: Thu May 14, 2015 6:30 pm
by jrestojeda
Joel,
Muchas gracias por la respuesta.
Voy a hacer las pruebas correspondientes y luego comentaré.
Saludos,