¿ Cuál es la mejor forma de registrar DLL u OCX, transparente al usuario ?

223 views
Skip to first unread message

Cristian Novoa

unread,
Jun 21, 2022, 6:22:50 PM6/21/22
to Comunidad de Visual Foxpro en Español
Al comienzo de la aplicacion...
Gracias.

IngeSis Ingeniería & Sistemas

unread,
Jun 21, 2022, 9:34:19 PM6/21/22
to Comunidad de Visual Foxpro en Español
Amigo, buenas noches. Es más recomendable hacerlo en el instalador de tu aplicación. Si lo haces cada vez en el inicio de la aplicación, sería redundante porque es un proceso que se debe hacer una única vez para el sistema operativo.
¡Feliz noche!.

HernanCano

unread,
Jun 22, 2022, 11:22:19 AM6/22/22
to Comunidad de Visual Foxpro en Español

Hola.

Con respecto a registrar DLLs en Windows, te cuento:

1. Normalmente las DLLs deben registrarse con el comando REGSVR32 de la línea de comandos de Windows, como por ejm XZIP.DLL de Xstandard.
Las DLLs pueden usarse en VFP, y también en otros lenguajes de programación.

Recordemos que para ejecutar este comando, debemos "abrir" una ventana del símbolo del sistema con lo que conocemos como "permisos de administrador" o también "con elevación de permisos de administrador" ("Ejecutar como administrador").


8 de junio de 2007
Registrar OCX / DLL en Windows Vista
https://comunidadvfp.blogspot.com/2007/06/registrar-ocx-dll-en-windows-vista.html


19 de diciembre de 2007
Cómo saber si un ActiveX ya fué registrado
https://comunidadvfp.blogspot.com/2007/12/como-saber-si-un-activex-ya-fue.html

----------------------------------------------------------------------------------------
2. Cuando una DLL se puede registrar con REGSVR32, entonces muy probablemente se puede registrar desde dentro de VFP con VB6STKIT.DLL, más o menos así:

if RegXZip()
   MessageBox('Registrado Ok')
else
   MessageBox('No se registró')
endif

function RegXZip
declare integer DLLSelfRegister in [Vb6stkit.DLL] string lpDllName
return ( DLLSelfRegister([xZip.dll]) = 0 )

**

Recordemos además que para poder ejecurar esta acción, también se debe haber ejecutado nuestra aplicación (sólo la primera vez) con "permisos de administrador".


16 de agosto de 2002
Registrar y desregistrar un archivo OCX o DLL
https://comunidadvfp.blogspot.com/2002/08/registrar-y-desregistrar-un-archivo-ocx.html

----------------------------------------------------------------------------------------
3. Existen algunas DLLs que --para poder ser usadas en VFP-- necesitan ser registradas con RegAsm; al parecer es por que están escritas en .Net, como por ejm CsFoxyStmp, de nuestro colega Antonio Meza, y CSFoxReadMail.dll de Valentín Fernández.

Antonio Meza, en su portal, nos indica que "Deben abrir una ventana de comandos (MSDOS) con privilegios de Administrador para poder registrar la librería".

6 ago 2021
Comparto CSFoxReadMail para descargar archivos adjuntos gmail
https://groups.google.com/g/publicesvfoxpro/c/W4CP8_BJzJQ/m/hRq7qIEPAAAJ?hl=es-419


CsFoxySmtp
https://foxydb.wordpress.com/csfoxysmtp/

----------------------------------------------------------------------------------------
4. Existen algunas DLLs que no necesitan ser registradas para poder ejecutarlas, como por ejm SFMail de Doug Hennig, y LibHPDF.dll (que es utilizada por ejm por FoxyPreviewer para generar PDFs).


Wednesday, March 16, 2022
Sending Emails with Modern Authentication
https://doughennig.blogspot.com/2022/03/sending-emails-with-modern.html

----------------------------------------------------------------------------------------
5. Recordemos además que las FLLs tampoco necesitan ser registradas, sólo que las FLL son para usar únicamente dentro de VFP, y no en otros lenguajes de programación.

Ejemplos: VFPCompression.fll, VfpConnection.fll, VFP2C32.fll, MyFll.fll, FoxTools.fll.

----------------------------------------------------------------------------------------
6. Existen además algunas DLLs que se consideran "autoregistrables". Al parecer ésto indica que no necesitan de Vb6stkit.DLL para ser registradas.
Son registrables mediante la función DllRegisterServer incluida en ellas mismas. Y es muy probable que se deba ejecutar el registro con "permisos de administrador" (así lo menciona Walter en su portal VFPAvanzado).

En VFP tenemos la función AGETFILEVERSION() la cual en su elemento # 13 nos indica si una DLL es autoregistrable o no, en cuyo caso contiene la palabra OLESelfRegister.

Creo recordar que las DLL de CodeJock presentan esa característica, pero no tengo las DLL para mostrarte (tengo entendido que ya no son libres).


if RegChart('MSCHRT20.OCX')
   MessageBox('Registrado Ok')
else
   MessageBox('No se registró')
endif

function RegChart(tcOCX)
declare integer DllRegisterServer in (tcOCX) string lpDllName
return ( DllRegisterServer() = 0 )

**

21 noviembre, 2017 / wrov
Registrando archivos OCX y DLL
https://vfpavanzado.wordpress.com/2017/11/21/registrando-archivos-ocx-y-dll/

----------------------------------------------------------------------------------------
7. Recuerda que cualq DLL/FLL que funcione en VFP-32bits necesita ser re-compilada a 64 bits para poder ejecutarse en 64 bits. O dicho de otra manera: si para ejecutar alguna característica en VFP-32bits necesitas un DLL o FLL, entonces necesitas la versión 64 bits de esa DLL o FLL para ejecutarla en VFPA-x64.

----------------------------------------------------------------------------------------
Sobre-Registrar.txt

HernanCano

unread,
Jun 22, 2022, 11:30:11 AM6/22/22
to Comunidad de Visual Foxpro en Español
A mí me parece que la mejor forma de registrar DLL u OCX de forma transparente para el usuario, es que la DLL esté compilada o como FLL o como DLL --similar a SFMail.dll o LibHPDF.dll-- que no necesite ser registrada (ésto implica decirle a los que nos piden registrarla con RegAsm que no nos obliguen a registrarlo así con RegAsm).

Sin embargo éso es algo que depende del programador que la escribió originalmente en el lenguaje C/C++, no del que la está usando en VFP u otro lenguaje.

Aunque también si aprendiéramos a usar Vb6stkit.DLL (que sólo necesita permisos de administrador únicamente la primera vez que se ejecute nuestra app para registrar la DLL en cuestión), pues es la mejor alternativa por ahora.
Reply all
Reply to author
Forward
0 new messages