Saludos al todo el distiguido foro:
Ok. haciendo pruebas e investigando un poco sobre claves del registro de windows he llegado a la conclusion de que si se puede hacer esta "trampita" que permite disfrazar cualquier extenciòn de archivo a y asociarla a nuestra aplicación.
¡¡ CUIDADO !! Es pa toda la gente que le gusta ser cremosa y que gustan que sus aplicaciones se vean a veces medias cursis, pero es a fin y al cabo una aportaciòn màs.
por ejemplo: si queremos que nuestros archivos .DBF tengan un ìcono y asosiarlo a nuetra aplicaiòn yo lo hago de la siguiente forma:
Registra(".DBF","baseddatos.aplicacion","Mi tabla de trabajo",14)
y esta el la funciòn que se encarga de este truco:
#Include "FIVEWIN.CH"
#ifndef __XPP__
#define HKEY_CLASSES_ROOT 2147483648
#define HKEY_CURRENT_USER 2147483649
#define HKEY_LOCAL_MACHINE 2147483650
#define HKEY_USERS 2147483651
#define HKEY_PERFORMANCE_DATA 2147483652
#define HKEY_CURRENT_CONFIG 2147483653
#define HKEY_DYN_DATA 2147483654
#else
#define HKEY_CLASSES_ROOT 1
#define HKEY_CURRENT_USER 2
#define HKEY_LOCAL_MACHINE 3
#define HKEY_USERS 4
#define HKEY_PERFORMANCE_DATA 5
#define HKEY_CURRENT_CONFIG 6
#define HKEY_DYN_DATA 7
#endif
//-------------------------------//
FUNCTION Registra(cExten,cCadena,cTipo,nIcono)
LOCAL oReg
LOCAL cAplicacion:= UPPER(ALLTRIM(GetModuleFileName(GetInstance()))+","+ALLTRIM(STR(nIcono)))
oReg:= TReg32():CREATE( HKEY_CLASSES_ROOT, cExten )
oReg:SET( "", cCadena )
oReg:CLOSE()
oReg:= TReg32():CREATE( HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\"+cExten )
oReg:= TReg32():CREATE( HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\"+cExten+"\OpenWithList" )
oReg:= TReg32():CREATE( HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\"+cExten+"\OpenWithProgids" )
oReg:CLOSE()
oReg:= TReg32():CREATE( HKEY_LOCAL_MACHINE, "Software\Classes\"+cExten )
oReg:SET( "", cCadena )
oReg:CLOSE()
oReg:= TReg32():CREATE( HKEY_CLASSES_ROOT, cCadena )
oReg:SET( "", cTipo )
oReg:CLOSE()
oReg:= TReg32():CREATE( HKEY_CLASSES_ROOT, cCadena+"\DefaultIcon" )
oReg:SET( "", cAplicacion )
oReg:CLOSE()
oReg:= TReg32():CREATE( HKEY_LOCAL_MACHINE, "SOFTWARE\Classes\"+cCadena )
oReg:SET( "", cTipo )
oReg:CLOSE()
oReg:= TReg32():CREATE( HKEY_LOCAL_MACHINE, "SOFTWARE\Classes\"+cCadena+"\DefaultIcon" )
oReg:SET( "", cAplicacion )
oReg:CLOSE()
RETURN nil
Donde:
cExten: Es la estención a Asociar. esta debe ser antrecedida por punto (.)
cCadena: es la cadena de caracteres donde se crea la clave en el registro.
cTipo: Aky podemos poner una leyenda para verla en el explorador.
nIcono: Este es el nùmero de icono para identificarlo, comienza desde 0 ya que es el primer icono con el que comienza nuetra aplicaciòn.
Esta es la soluciòn que tengo implantada en mi aplicaciòn y le da màs vistosidad a los archivos, es 100% funcional, y no interfiere con otros archivos asociados a otras aplicaciones...
estoy trabajando para que al hacer doble click el archivo sea abierto por nuetra aplicaciòn, esto serà proximamente..
Saludos y nos escribimos luego..
I.S.C. Vìctor Daniel Cuatècatl Leòn.