2010-01-23 19 views
37

he desarrollado una aplicación que carga una imagen usando el menú contextual de la ventana (clic derecho en el archivo) y por el momento está funcionando, pero la tecla reg está activadaAgregar elemento de menú al menú contextual de Windows solo para el tipo de archivo específico

HKEY_CLASSES_ROOT\* 

y funciona con todos los archivos.

Quiero que el elemento del menú en el menú contextual se muestre solo con archivos .jpg.

¿Qué puedo hacer eso? ¿Qué claves de registro debería usar?

Gracias de antemano.

Respuesta

69

1) Identificar el tipo de archivo (ProgID) para archivos .jpg

Esto se puede hacer mediante la comprobación del valor predeterminado de HKEY_CLASSES_ROOT\.jpg. Podría ser cualquier cosa en función de lo que haya instalado, pero a efectos de este ejemplo, lo llamaremos jpegfile, un valor predeterminado común.

2) Ajuste el elemento de menú contextual (verbo) propiedades de ese archivo

Puede configurar elementos del menú contextual de cada usuario dentro HKEY_CURRENT_USER\Software\Classes\jpegfile\shell. Esta clave tiene una lista de verbos para el tipo de archivo. Hay una clave similar en HKEY_LOCAL_MACHINE\Software\Classes\jpegfile\shell, y estos son los valores predeterminados del sistema para el tipo de archivo. También puede poner una clave de verbo, pero si la misma clave existe en HKCU, se anulará, así que tenga en cuenta.

3) Establecer el valor de orden

El valor de la clave mínimo que se debe establecer para conseguir que funcione es el valor predeterminado de la command subclave. Debe configurarlo con la ruta de acceso a su aplicación, de esta manera: HKEY_CURRENT_USER\Software\Classes\jpegfile\shell\open_with_myapp\command se configurará en "c:\path\to\myapp.exe" "%1". Ahora, un menú contextual para archivos .jpg tendrá un elemento "abrir_con_myapp" que iniciará su aplicación cuando se haga clic y pasará el nombre del archivo seleccionado como parámetro. Por supuesto, la forma en que la aplicación procesa los parámetros depende de usted, por lo que deberá establecer la cadena de parámetros en algo que su aplicación pueda procesar.

4) Establecer otras propiedades verbales

me imagino lo que probablemente va a querer el elemento del menú contextual para leer algo un poco más amigable que el nombre de clave. Puede hacer que el menú contextual muestre la etiqueta que desee para su elemento estableciendo el valor predeterminado de esa tecla (open_with_myapp).

Esa es su descripción general básica. Sin duda la salida de mi respuesta a esta pregunta acerca de asociar un archivo, el cual tiene una respuesta similar:

+0

¡Muchas gracias! –

+2

Conozco este método para agregar entradas al menú contextual. Sin embargo, ¿también puede mencionar cómo hacer una entrada como predeterminada? Sé cómo hacer esto usando "opciones de carpeta", pero la línea de comando o las opciones de registro serían geniales. (Creo que tenemos que hacerlo con la entrada de dword 'editflags', pero no estoy seguro.) – anishsane

+1

@anishsane establezca el valor predeterminado de la tecla 'shell' para el nombre de la clave del verbo que desea que sea predeterminada –

0

Hay another key en el Registro que funciona independientemente de los programas predeterminados de usuario: HKEY_CLASSES_ROOT\SystemFileAssociations. Como nadie lo mencionó en esta pregunta ... No es necesario verificar ProgID antes de agregar el elemento del menú contextual.Ejemplo:

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\SystemFileAssociations\.mkv\shell\subtitle] 
@="Search subtitles..." 

[HKEY_CLASSES_ROOT\SystemFileAssociations\.mkv\shell\subtitle\command] 
@="\"D:\\Tools\\subsearch.exe\" \"%1\"" 
Cuestiones relacionadas