Ver Mensaje Individual
  #2  
Antiguo 20-10-2006
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Reputación: 18
aeff Va camino a la fama
Post

Esto me lo enviaron(de parte de ixMike Lunatiko (de la Luna)), y yo te lo voy a enviar a ti, espero que te sirva, acuerdate de declarar la variable TRegistry y todo lo demas:

-Primero, en HK_CLASSES_ROOT buscas la extensión del archivo (.ext, por ejemplo) y el valor "(Predeterminado)" escribes lo que sea (algo que puedas recordar, en este ejemplo "myapp.ext") En el caso de que ya haya algo escrito ir al siguiente paso.
-Después crear la clave HK_CLASSES_ROOT\myapp.ext (o lo que hayas escrito antes). Ahí, en "(Predeterminado)" escribes la descripción del archivo, y creas dos SubClaves "DefaultIcon" y "shell"
-En "Predeterminado" de DefaultIcon escribes el archivo de icono que quieras poner con el índice (ejemplo: "C:\Windows\system32\shell32.dll,14" ó "C:\Archivos de programa\MyApp\MyApp.exe,0") Este icono será con el que aparezca en el Explorador.
-En "Shell" creas tantas claves como subitems quieras en el Explorador. Por ejemplo creas "open" (esta es la que se ejecuta por defecto), en "Predeterminado" de "open" pones lo que quieras que aparezca en el Item del menú del Explorador, creas en "open" una subclave llamada "command" y en su valor "Predeterminado" escribes el comando a ejecutar (Por ejemplo "C:\archivos de programa\MyApp\Myapp.exe %1") "%1" sirve para indicar el archivo seleccionado.

En teoría ya está todo hecho, pero para que en Explorador aparezcan los cambios debes reiniciar sesión o ejecutar la función SHChangeNotify de la API de windows (está en la unit "ShlObj" o en "Ole2", no lo recuerdo bien) con los valores adecuados (mira la ayuda de la función).



En cuanto lo del ejemplo que incorpora Delphi, eso es especial, porque permite con una DLL crear cuantos items necesites, o ninguno si el archivo no es compatible, y poner icono en el Item y la propiedad Hint, pero también es más complejo.


Bye!!!
Responder Con Cita