C # Windows ‘Open With>’ Comportamiento del menú contextual

Posible duplicado:
Asociación de tipo de archivo con la aplicación (C #)

Estoy escribiendo una aplicación C # Windows para visualizar y modificar archivos ‘.build’ (scripts nant). Me gustaría que el usuario pueda hacer clic derecho en un archivo .build en el explorador de Windows y seleccionar la opción ‘Abrir con>’ para permitir que el archivo se modifique en mi aplicación.

¿Qué necesita apoyar mi progtwig para trabajar con este mecanismo? ¿Qué debe hacer mi progtwig con Windows para habilitar el soporte del menú contextual?

Me preguntaba si alguien podría indicarme un buen artículo / tutorial sobre este tema.

El comando Abrir con solo pasa la ruta del archivo como primer argumento de la aplicación, por lo que todo lo que debe hacer es

public static void Main(string[] args) { if(args[0] != null) { //args[0] contans a path to the file do whatever you need to do to display it } else { //Start normally } } 

Para poner automáticamente su progtwig a la vista con la lista, deberá agregar algunas claves de registro en HKEY_CLASSES_ROOT\YOUR_EXT\ . Aquí hay una respuesta SO que dice cómo hacerlo

O simplemente puede agregarlo a mano al abrir con la lista de la manera normal.

Eche un vistazo a esta publicación de blog: Extensiones de Shell – Menú contextual . Tiene un código para un simple “envoltorio” para algunos ganchos COM en el menú contextual del shell de Windows. Colóquelo en el GAC y cuando haga clic derecho, su menú se incluirá como un submenú del menú contextual del botón derecho.

En cuanto al uso estricto de “Abrir con …” para hacer que su aplicación aparezca SOLAMENTE para los archivos que puede abrir, eso es un poco más fácil. Estos son gestionados por Windows utilizando claves de registro en dos lugares del registro:

  1. HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .FileExtension \ OpenWithList (instalación para el usuario actual)
  2. HKEY_CLASSES_ROOT \ .FileExtension \ OpenWithList (instalación para todos los usuarios)

Eche un vistazo a algunos de los existentes usando regedit, luego use la clase Registry para crear una nueva clave para la extensión que desee.