Llamar DLL de Visual Basic .NET en Visual Basic 6

Instrucciones para exponer tipos de .NET a COM

Cuando desea exponer tipos en un ensamblado de Microsoft .NET a aplicaciones de modelo de objetos componentes (COM), considerar los siguientes requisitos de interoperabilidad de COM en tiempo de diseño. Administrado tipos ( clase , interfaz , estructura , enumeración y otros) interactúan bien con las aplicaciones de cliente COM cuando siga estas directrices:
  • Definir interfaces y implementar explícitamente en las clases. Interoperabilidad COM proporciona un mecanismo para generar automáticamente una interfaz que contiene todos los miembros de la clase y los miembros de su clase base. Sin embargo, es mejor proporcionar interfaces explícitas y implementar de forma explícita.
  • Declarar tipos administrados todos los que desea exponer a COM como pública. Sólo los tipos públicos en un ensamblado están registrados y exportar a la biblioteca de tipo. Por tanto, sólo los tipos públicos son visibles para COM.
  • Declarar a todos los miembros de tipo (métodos, propiedades, campos y eventos) que desee exponer a COM como pública. Los miembros de tipos públicos también deben ser públicos sean visibles para COM. De forma predeterminada, todos los tipos públicos y miembros son visibles. Utilice el atributo ComVisibleAttribute si tiene que ocultar un miembro de tipo o miembro visibilidad de controles para las aplicaciones de cliente COM o de un tipo.
  • Los tipos deben tener un constructor predeterminado público para ejecutarse a través de COM administrado, tipos públicos son visibles para COM. Sin embargo, sin un constructor público predeterminado (un constructor sin argumentos), COM los clientes no pueden crear una instancia del tipo. Los clientes COM pueden utilizar el tipo si el tipo es crear instancias en otra forma y se devuelve al cliente COM la instancia. Puede incluir constructores sobrecargados que aceptan argumentos distintos para estos tipos. Sin embargo, los constructores que aceptan argumentos sólo se pueden llamar desde código administrado (. NET).
  • Tipos no pueden ser abstractas. Ni los clientes COM como .NET los clientes pueden crear instancias de tipos abstractos.
  • Utilice la plantilla clasecom en Visual Basic .NET o en Visual Basic 2005. Cuando agrega una nueva clase que desea exponer a las aplicaciones COM, considere el uso la plantilla clasecom que se proporciona mediante Visual Basic.NET o Visual Basic 2005. La plantilla clasecom crea una clase que incluye el atributo COMClassAttribute y genera GUID para el CLSID, el identificador de interfaz y su identificador que exponen su tipo. Además, la plantilla clasecom crea un constructor público sin parámetros. Esta es la forma más fácil para crear una nueva clase que sigue las instrucciones para crear tipos de COM al que se puede llamar.

Registrando el ensamblado de .NET para interoperabilidad COM y creando una biblioteca de tipo

Para Visual Basic 6.0 interactuar correctamente con un componente administrado, debe registrar el ensamblado para interoperabilidad COM y generar una biblioteca de tipo. Este registro debe realizarse en cada equipo donde un COM aplicación cliente interactúa con el ensamblado. La biblioteca de tipo proporciona información de tipo sobre los tipos expuestos en el ensamblado a las aplicaciones de cliente COM. El proceso para hacer esto depende de si está trabajando en el equipo de desarrollo o en el equipo de destino.

En el equipo de desarrollo Visual Studio.NET o Microsoft Visual Studio 2005 automáticamente crea una biblioteca de tipo y lo registra durante el proceso de generación si está activada la casilla de verificación Registrar para interoperabilidad COM en Propiedades de configuración del proyecto. Si utilizó la plantilla clasecom cuando creó la clase, Visual Studio .NET o Visual Studio 2005 selecciona automáticamente el de Registrar para interoperabilidad COM casilla de verificación. Para comprobar que está activada la casilla de verificación Registrar para interoperabilidad COM en Visual Studio .NET o Visual Studio 2005, siga estos pasos:
  1. Inicie Visual Studio .NET o Visual Studio 2005.
  2. Abra la solución que contiene el proyecto que desea generar la interoperabilidad COM.
  3. En el menú Ver , haga clic en Solution Explorer .
  4. En el Explorador de soluciones, haga clic con el botón secundario del mouse en el proyecto que desea generar la interoperabilidad COM y, a continuación, haga clic en Propiedades .
  5. Haga clic en Propiedades de configuración y, a continuación, haga clic en el nodo Build .

    Nota En Visual Studio 2005, haga clic en compilar en el panel izquierdo.
  6. Haga clic para seleccionar el Register for COM Interop casilla de verificación. Esta opción sólo está habilitada en los proyectos de biblioteca de clases.
  7. Haga clic en Aceptar para cerrar el propiedad páginas cuadro de diálogo.
Si no está instalado Visual Studio .NET o Visual Studio 2005 o si tiene que generar manualmente y registrar un archivo de biblioteca (.tlb) de tipo para el ensamblado administrado, utilice la herramienta Registro de ensamblados (RegAsm.exe) con el / TLB cambiar. También se debe utilizar el modificador / código base si el ensamblado administrado es un ensamblado privado y desea colocar el ensamblado administrado en una carpeta diferente del proceso de host (EXE).

Un ensamblado privado se implementa con una aplicación y está disponible para uso exclusivo de esa aplicación. Otras aplicaciones no comparten el ensamblado privado. Ensamblados privados están diseñados para instalarse en la misma carpeta que el proceso de host (EXE). Con una aplicación de cliente COM, esto implica que el ensamblado se encuentra en la misma carpeta que esa aplicación. Un ensamblado compartido está disponible para uso por varias aplicaciones en el equipo. Para crear un ensamblado compartido, debe firmar el ensamblado con un nombre seguro e instalar al ensamblado en la caché de ensamblados global (GAC) en el equipo de destino.

Para obtener más información acerca de cómo firmar el ensamblado con un nombre seguro e instale al ensamblado en la caché de ensamblados global (GAC), visite el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx)
Debe utilizar ambos el / tlb: modificador y el / la código base cambiar al registrar el ensamblado. El / tlb: modificador genera y registra una biblioteca de tipo, y el modificador / código base registra la ubicación del ensamblado administrado en el registro de Windows. Si no utiliza el modificador / código base y no se ha instalado el ensamblado en la caché de ensamblados global (GAC), debe colocar una copia del ensamblado en la carpeta de cada aplicación de cliente COM (EXE) para que se puede encontrar el ensamblado de common language Runtime (CLR).

Para generar y registrar una biblioteca de tipo y registrar la ubicación del ensamblado administrado, escriba el comando siguiente en el símbolo del sistema:
/tlb de Regasm AssemblyName.dll: FileName.tlb /CODEBASE

Crear un ensamblado al que se puede llamar de COM en Visual Basic .NET

  1. Inicie Visual Studio .NET o Visual Studio 2005.
  2. En el menú archivo , seleccione nuevo y, a continuación, haga clic en proyecto .
  3. En Tipos de proyecto , haga clic en Proyectos de Visual Basic .

    Nota En Visual Studio2005 haga clic en Visual Basic bajo Tipos de proyecto .
  4. En plantillas , haga clic en Class Library .
  5. Denomine el proyecto TestProj y, a continuación, haga clic en Aceptar .

    De manera predeterminada se crea Class1.
  6. En el menú Ver , haga clic en Solution Explorer .
  7. Haga clic con el botón secundario del mouse en Class1.vb y, a continuación, haga clic en Eliminar . Haga clic en Aceptar para confirmar la eliminación del archivo de origen Class1.vb.
  8. En el menú proyecto , haga clic en Agregar clase .
  9. En plantillas , haga clic en Clase COM .
  10. Asigne a la clase COMClass1.vb el nombre y, a continuación, haga clic en Abrir

    COMClass1 se crea con el código siguiente.
     _
    Public Class ComClass1

    #Region "COM GUIDs"
    ' These GUIDs provide the COM identity for this class
    ' and its COM interfaces. If you change them, existing
    ' clients will no longer be able to access the class.
    Public Const ClassId As String = "6DB79AF2-F661-44AC-8458-62B06BFDD9E4"
    Public Const InterfaceId As String = "EDED909C-9271-4670-BA32-109AE917B1D7"
    Public Const EventsId As String = "17C731B8-CE61-4B5F-B114-10F3E46153AC"
    #End Region

    ' A creatable COM class must have a Public Sub New()
    ' without parameters. Otherwise, the class will not be
    ' registered in the COM registry and cannot be created
    ' through CreateObject.
    Public Sub New()
    MyBase.New()
    End Sub

    End Class
  11. Agregue la siguiente función a COMClass1.
       Public Function myFunction() As Integer
    Return 100
    End Function
  12. En el Explorador de soluciones, haga clic con el botón secundario en Project Name y, a continuación, haga clic en Propiedades .
  13. En Propiedades de configuración , haga clic en Generar .
  14. Compruebe que se comprueba la Registrar para interoperabilidad COM está activada y, a continuación, haga clic en Aceptar .
  15. En el menú Generar , haga clic en Generar soluciones para generar el proyecto.
  16. Inicie Visual Basic 6.0.
  17. En el menú archivo , haga clic en Nuevo proyecto y, a continuación, haga clic para seleccionar EXE estándar en el cuadro de diálogo Nuevo proyecto .

    De forma predeterminada, se crea un formulario que se denomina Form1.
  18. En el menú proyecto , haga clic en referencias .
  19. En la lista Referencias disponibles , haga doble clic para seleccionar TestProj y, a continuación, haga clic en Aceptar .
  20. Agregue un botón de comando al formulario.
  21. Haga doble clic en Command1 para abrir el código de ventana.
  22. Agregue el código siguiente al evento Command1_Click .
    Dim myObject As TestProj.COMClass1
    Set myObject = New TestProj.COMClass1
    MsgBox myObject.myFunction
  23. En el menú Ejecutar , haga clic en iniciar .
  24. Haga clic en el botón de comando.

    Debe recibir un mensaje que muestra 100.

Sacado del soporte de Microsoft.

Joomla - Añadir mas campos al registro de usuario

Buenas, veamos como podemos añadir facilmente más campos al registro de un usuario sin necesidad de ningun tipo de extensión.


En esté ejemplo yo añadire el campo Empresa.

Bueno, lo primero es añadir los campos en la base de datos.

Vas a la tabla jos_users y añades los campos necesarios, en mi caso añado empresa.

Lo segundo es editar el formulario de registro para añadir los campos que queramos.

Esté es el archivo del formulario /components/com_user/views/register/tmpl/default.php . Lo editamos con cualquier procesador de texto, por ejemplo el bloc de notas.

Si sabemos de HTML os sera muy facil editarlo.

Para el que no:

Lo que hay entre <tr> </tr> es una fila del formulario, es decir, el texto descriptivo y el campo blanco para escribir.

Pues nos copiamos uno, por ejemplo el del usuario:


<label id="usernamemsg" for="username">
Username:
</label>

<input id="username" name="username" value="" type="text" style="font-size: 40px;">escape($this->user->get( 'username' ));?>" class="inputbox required validate-username" maxlength="25" /> *


Ese lo volvemos a pegar debajo y procederemos a editarlo.

Yo cambiaria todos los "username" por "empresa" y quitaria del atributo class "validate-username"

Me quedaría así:

<label id="empresamsg" for="empresa">
Empresa:
</label>


<input id="empresa" name="empresa" size="40" value="" type="text">escape($this->user->get( 'empresa' ));?>" class="inputbox required" maxlength="25" /> *


Guardamos los cambios y podriamos probar la página para ver los resultados.

Este formulario usa un objeto JTABLE de joomla que carga los datos del form sobre la tabla , es decir, en ningun momento ese componente usa SQL puro.

Así que tenemos que añadirle la propiedad "empresa" ¿Como? Pues , buscamos el archivo /libraries/joomla/database/table/user.php y lo editamos con el bloc de notas.

Simplemente tenemos que añadir la declaracion de la variable.

Cogiendo por ejemplo de nuevo el username existe este texto en el archivo


/**
* The login name
*
* @var string
*/
var $username = null;


pues tendriamos que añadir, (yo no le pondre comentarios)

var $empresa = null;


Importante: Está variable tiene que llamarse exactamente igual que el nombre del campo de la base de datos.

Guardamos y listo! A probarlo!

VB.NET - Capturar la rueda del ratón

Para capturar el movimiento de la rueda del ratón se usa el evento MouseWheel

Para capturar si se mueve hacia arriba o hacia abajo se usa el argumento Delta

Lo que devuelve Delta es:

Si es hacia arriba devuelve un Integer con el valor 120
Si es hacia abajo devuelve un Integer con el valor -120

Un ejemplo:


Private Sub Form1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel

Select Case e.Delta
Case 120
'Se ha movido hacia arriba
Case -120
'Se ha movido hacia abajo.
End Select

End Sub

Un uso que se me ocurre por ejemplo es aumentar o disminuir una variable Zoom.

VB.NET - Subir fichero a un servidor por FTP

Para subir un fichero a un servidor mediante FTP, ¡¡solo hay que usar una linea!!

Y la linea es........................................................................

My.Computer.Network.UploadFile("FicheroASubir", "CarpetayNombreDelFicheroEnServidor", "UsuarioFTP", "ContraseñaFTP", True o False, 500)

Donde True o False es si quieres mostrar una pantallita con el progreso de la subida.

500 es el TimeOut. (Tiempo de espera por si falla)