Pongo un ejemplo que lo que hace es modificar unas claves en el
registro, para poder asociar una extensiòn de archivo determinado con
nuestro programa mediante el menu contextual de win2 cuando le damos
click derecho sobre un archivo.
.
El ejemplo està hecho para
asoociar los archivos .HTML, pero obviamente el metodo sirve para
cualquier otraextensiòn, incluso para una nueva.
(ojo!! en el
ejemplo sirve solo para los .html,no para los.htm, para eso
abria que modificar lo mismo que se hace para la extension .html) .
Colocar un Control Web "
Microsoft Internet Controls" y 1
command1.
El command1 es el que ejecuta el còdigo que modifica el registro
para asociar la extencion .Html y despues cuando despleguemos el menu
contextual sobre un .htmlaparezca: "
Abrir con Mi navegador"
Código:
Private Sub Command1_Click()
'variable de tipo object para leer y crear claves en el registro
Dim obj As Object
'la ruta de nuestra aplicacion
Dim ruta As String
'seteamos la variable y creamos el objeto
Set obj = CreateObject("WScript.Shell")
'leemos el valor predeterminado de la clave .html
Resultado = obj.RegRead("HKEY_CLASSES_ROOT\.html\")
'Resultado ahora contiene el valor htmlFile
'Sabiendo ese valor nos posicionamos en dicha clave y creamos _
una nueva shell, dentro de Shell otra llamada por ejemplo miPrograma _
y agregamos como valor predeterminado el texto que va a aparecer cuando _
le demos click derecho sobre un archivo con extencion .html, ojo no .htm
obj.RegWrite "HKEY_CLASSES_ROOT\" & Resultado & "\Shell\MiNavegador\", "Abrir con MiNavegador"
'Ruta de nuestro exe
ruta = App.Path & "\" & App.EXEName & ".exe"
'ahoa dentro de la clave que creamos que quedò de esta manera: _
"HKEY_CLASSES_ROOT\htmlfile\shell\MiNavegador\command" _
agregamos la ruta mas el %1
obj.RegWrite
"HKEY_CLASSES_ROOT\" & Resultado &
"\Shell\MiNavegador\command\", """" & ruta & """" & " "
& "%1"
'Eliminamos la var de objeto
Set obj = Nothing
End Sub
Private Sub Form_Load()
'Cuando se inicia el form cargarà la pàgina pasada desde la linea de comandos
WebBrowser1.Navigate Command$
End Sub
Nota: si queremos que nuestra aplicacion sea la predeterminada hay que establecer la ruta de _
nuestro exe en esta clave:
HKEY_CLASSES_ROOT\htmlfile\shell\open\command
Tambièn dejo un post que puse el otro dìa sobre este mismo tema:
------------------------------------------------------------ ---
Supongamos que nuestra aplicaciòn permite abrir archivos de tipo .AVI.
El programa determinado supongamos que es el BsplayerPro, o puede ser cualquier otro, el WmediaPlayer, etc....
Ahora
para agregar una opcion al menu desplegable del win2 con un texto por
ej: "Abrir con Mi Programeitor", hay que buscar en el registro
(mediante Api o WScript.Shell "mas as facil") en la clave :
HKEY_CLASSES_ROOT
En esta clave si se fijan hay muchas subclaves con todas las extensiones registradas en el sistema (.Avi,.txt, .Doc, etc..)
Siguiendo con el ejemplo del Avi: Antes de poder seguir debemos
obtener el valor predeterminado que dice esa clave, por ejemplo el
valor de la clave.Avi, queen mi registroes:
BSPlayerFile.AVI (el famoso reproductor BsplayerPro)
. Este es un texto de tipo cadena string solo de informaciòn, que nos va a servir para continuar con lo que viene.
Una ves recuperadoel valor
BSPlayerFile.AVI, si seguimos mas abajo en el registro, siempre dentro de la Rama
HKEY_CLASSES_ROOT, vamos a encontrar una nueva clave con este mismo nombre
: BSPlayerFile.AVI, es decir la que estaba en el valor predeterminado de la clave:
HKEY_CLASSES_ROOT\.AVI
Esta
clave es la que tiene la informacion para mostrar el texto en el menù
de windows y tambièn la ruta denuestra aplicaciòn para poder
abrirla. Entonces buscamos la clave
BSPlayerFile.AVI y dentro de esta clave hay otras: LA QUE IMPORTA en este caso es la clave
Shell, que iguiendo la ruta del ejemplo serìa
: HKEY_CLASSES_ROOT\BSPlayerFile.AVI\shell
Dentro de la clave
SHELL creamos una nueva clave(Me refiero con Clave a no un Valor dentro de la clave Shell, si no a una "Clave nueva" que cuelgue de
Shell, al que entiende un poco esto no es necesario explicarlo, jeje) llamada por ejemplo
MiPrograma.
Esta
nueva clave, como cualquier otra nueva que se crea, siempre crea un
valor predeterminado de cadena, en ese valor predeterminado es el texto
que se va a mostrar en el menu contextual del Win2 cuando le demos
click derecho a un archivo, en este caso un AVi, por lo que podremos
poner : "
Abrir con ProgramaPepitoGonsales" que es el caption que va a aparecer en el menu contextual
Pero falta algo, dentro de la clave que habiamos creado llamada "
Mi Programa" hay que crear otra sub clave que cuelgue de esta, llamada
command.
Al crear la clave
Command, como siempre, se
asignarà un valor predeterminado de cadena, dentro de ese valor hay que
poner la ruta de nuestra aplicaciòn de esta forma:
"C:\Archivos de programa\ProgramasPepe\Miprograma.exe" "%1"
Si queresmo agregaruna nueva extennsion al sistema, por ejemplo un rachivo de extension , no se, un
.sss,
por decir uno , y que cuandole demosClick derecho a
cualquiera archivo .sss y aparesca una lista de opciones, hay que
seguir los mismo pasos, los pasos a seguir seria,
1 - crear dentro dela rama
HKEY_CLASSES_ROOT una clave
.sss
y despues agregarle un valor predeterminado, por ejemplo "
Archivos.sss".
2-Despues crear dentro de la rama
HKEY_CLASSES_ROOT una nueva
clave llamda:
Archivos.sss.
Dentro de esta clave unallamada
shell .
3-Dentro de
Shell una clave llamada por ej
Mi programa, como valor predeterminado le ponemos "
Abrir con mi programa", este es el texto que aparece en el menu de windows.
4 - Y por ultimo, dentro de la clave anterior, se crea otra CLAVEllamada
Command que tiene el path denuestra aplicacion, con este formaro: "c\miProgrma.exe" "%1"
Edited by: Luciano