2010-09-27 17 views
6

Estoy trabajando en un programa que puede leer, escribir y exportar archivos, todas estas funciones funcionan bien y están casi perfeccionadas. Lo que me gustaría hacer ahora es poder elegir un archivo y decirle "Abrir con" (en el menú contextual del botón derecho en Windows XP) y hacer que mi aplicación pueda manejar el archivo dado. No tengo idea de dónde empezar o dónde buscar, así que pensé en preguntar aquí. Gracias.Añadiendo "Abrir con ..." Funcionalidad C#

+0

pregunta es cómo saber si su aplicación se ejecuta por aplicación principal exe o con abrir con diálogo a su extensión de archivo de aplicación – MHD

Respuesta

0

Oye, creo que esto está definido en el registro. P.ej. MSAccess se define como:

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\Access.Application.11\shell\Edit] 
@="&Edit" 

[HKEY_CLASSES_ROOT\Access.Application.11\shell\Edit\command] 
@="\"C:\\Programmer\\Microsoft Office\\OFFICE11\\MSACCESS.EXE\" /NOSTARTUP \"%1\"" 

[HKEY_CLASSES_ROOT\Access.Application.11\shell\Edit\ddeexec] 
@="[SetForeground][ShellOpenDatabase \"%1\"]" 

[HKEY_CLASSES_ROOT\Access.Application.11\shell\Edit\ddeexec\Application] 
@="Msaccess" 

[HKEY_CLASSES_ROOT\Access.Application.11\shell\Edit\ddeexec\IfExec] 
@="[SHELLNOOP]" 

[HKEY_CLASSES_ROOT\Access.Application.11\shell\Edit\ddeexec\Topic] 
@="ShellSystem" 

También existe una GUI en Configuración de carpeta -> Tipos de archivo.

Br. Morten

+0

la pregunta es cómo manejar el archivo después de que es abierto por mi aplicación – MHD

0

que aparezca el cuadro de diálogo Ejecutar y escriba: regedit (Editor del Registro)

Ir a: HKEY_CLASSES_ROOT\*\shell y crear una subclave denominada: "Abrir con YourApp", crear otra subclave bajo el recién creado llamado " mando". En su valor predeterminado, ingrese la ruta a su exe, luego agregue "% 1" al final del parámetro.

1

Es posible echar un vistazo a este artículo de Windows KB:

"Cómo asociar una extensión de archivo a su aplicación (Win32)" http://support.microsoft.com/kb/185453

Parece que da código de ejemplo para saber cómo hacerlo esto en VBScript (?), pero parece que pasa por las rutas de registro que debe mirar.

-1

En Program.cs, agregue las líneas indicadas a continuación:

static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     var mainForm = new MainForm(); 

     // Add these lines: 
     // ---------------------------------------------- 
     string[] args = Environment.GetCommandLineArgs(); 
     if (args.Count() >= 2) 
      mainForm.LoadFile(args[1]); 
     // ---------------------------------------------- 

     Application.Run(mainForm); 
    } 
} 

Dónde LoadFile(string filePath) es su método que controla el archivo que se pasa desde el exterior.