Tip/Trick: Cómo detectar que archivo se está abriendo con nuestra aplicación

Nos encontraremos alguna vez con que nuestro programa tiene algun archivo asociado o algún archivo se podrá abrir con él. Para ello debemos acceder a los argumentos de la aplicación. Si nosotros abriesemos el programa desde línea de comando sería algo así:

app.exe c:archivo.txt

Eso sería lo mismo a en el archivo.txt darle click derecho, abrir con… y seleccionar nuestro programa (app.exe), o arrastrar archivo.txt sobre app.exe.

Para ello como os decía tenemos que acceder a los argumentos de nuestra aplicación, esto no es solo útil para abrir un archivo con el programa, sino también para abrir programas en modo avanzado (por ejemplo «app.exe advanced»,  desde línea de comando).

Para obtener esos argumentos solo tenemos que acceder a Environment.GetCommandLineArgs() que nos devuelve un array de strings, hay un pequeño problema, el argumento 0, es la ruta del ejecutable así que yo he hecho una función para ello:

string getFilePath()
{
    string file = «»;

    foreach (string arg in Environment.GetCommandLineArgs())
    {
        if (System.IO.File.Exists(arg) && Environment.GetCommandLineArgs()[0] != arg)
        {
            file = arg;
        }
    }

    return file;
}

Yo esto lo uso en el Program.Main(), pero bueno, en el load de un form, por ejemplo, también se podria usar sin problemas.

Espero que os sea útil [:)].

One thought on “Tip/Trick: Cómo detectar que archivo se está abriendo con nuestra aplicación

  1. weno yo lo intente y m salio errores,sera porque estaba trabajando con interfacez(window apliccation)(GUI) pero no creo que tenga nada que ver eso.pero iwal m aparece un error soluciones aqui porfavor o porque se debe esto

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *