19 de diciembre de 2007

Cómo saber si un ActiveX ya fué registrado

A veces distribuimos ActiveX (archivos OCX), los cuales es necesario registrar en Windows para poder utilizarlos, pero cómo averiguar si ya lo está para evitar su registro cada vez que se ejecute el sistema o registrarlo si es necesario.

Determinar si un ActiveX esta registrado llamando la siguiente función:
? OcxRegistrado("mscomctl2.monthview.2") && MontView
? OcxRegistrado("mscomctl2.dtpicker.2") && Date Time Picker
? OcxRegistrado("mscomctllib.treectrl.2") && Treeview
? OcxRegistrado("mschart20lib.mschart.2") && Ms Chart
? OcxRegistrado("mscommlib.mscomm.1") && MsComm

FUNCTION OcxRegistrado(cClase)
    Declare Integer RegOpenKey In Win32API ;
        Integer nHKey, String @cSubKey, Integer @nResult
    Declare Integer RegCloseKey In Win32API ;
        Integer nHKey
    nPos = 0
    lEsta = RegOpenKey(-2147483648, cClase, @nPos) = 0
 
    If lEsta
        RegCloseKey(nPos)
    Endif

    Return lEsta
Endfunc
Los archivos OCX tienen una referencia o nombre interno, para averiguar cual es agregamos este a un formulario de VFP, lo seleccionamos y revisamos la propiedad OleClass y ese será el nombre que utilizaremos.

Para registrar el OCX puede ser:

1) Directamente desde la opción Run/Ejecutar del botón inicio de Windows:
REGSVR32 <ArchivoOCX>
2) Desde Fox con macro de sustitución:
cRun="REGSVR32 <ArchivoOCX>"
!&cRun
3) Con la rutina de Jorge Mota:
DECLARE INTEGER DLLSelfRegister IN "Vb6stkit.DLL" ;
   STRING lpDllName
=DLLSelfRegister(<ArchivoOCX>)
-- REGISTRAR Y DESREGISTRAR UN ARCHIVO OCX O DLL --
http://comunidadvfp.blogspot.com/2002/08/registrar-y-desregistrar-un-archivo-ocx.html

Saludos.

Jesus Caro V

10 de diciembre de 2007

Semana del mes

Otra opción para los compañeros que necesitan saber la semana del mes ....

ldate = DATE()
? WEEK(ldate) - (WEEK(ldate - DAY(ldate) + 1) - 1)
Ernesto Hernandez