Agregue el elemento de menú al menú contextual de Windows solo para un tipo de archivo específico

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á activada

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? ¿Qué claves de registro debería usar?

Gracias por adelantado.

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

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

2) Establecer las propiedades del elemento de menú contextual (verbo) para ese tipo de archivo

Puede establecer elementos del menú contextual por usuario en 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 del comando

El valor mínimo de la clave que debe establecerse para que funcione es el valor predeterminado de la subclave del command . HKEY_CURRENT_USER\Software\Classes\jpegfile\shell\open_with_myapp\command configurarlo con la ruta a su aplicación, así: HKEY_CURRENT_USER\Software\Classes\jpegfile\shell\open_with_myapp\command se establecerá 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 que probablemente quieras que el elemento del menú contextual lea algo un poco más amigable que el nombre de la tecla. Puede hacer que el menú contextual muestre la etiqueta que desee para su elemento estableciendo el valor predeterminado de esa clave ( open_with_myapp ).

Esa es su descripción general básica. Definitivamente verifique mi respuesta a esta pregunta sobre la asociación de un archivo, que tiene una respuesta similar:

  • Crear entrada de registro para asociar la extensión de archivo con la aplicación en C ++

Hay otra clave en el registro que funciona independientemente de los progtwigs predeterminados del 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\"" 

Referencia: https://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx#reg_verbs

Intereting Posts