2015-07-26 4 views
2

Я разрабатываю приложение, и мне нужно прочитать EXIF-данные JPG-файла. Я могу сделать это с помощью кнопки OpenFileDialog, но я хочу, чтобы пользователь мог открыть файл JPG с моим приложением (щелкните правой кнопкой мыши> Открыть с), и я мог бы получить путь к файлу JPG в строке.Как открыть файл jpg с вашим приложением?

Я просто хочу знать, как получить путь к файлу, на котором пользователь щелкает правый щелкнул объявление выбранного открытой с «My Application»

+0

Возможный дубликат [Как получить данные EXIF ​​из файла с помощью C#] (http://stackoverflow.com/questions/58649/how-to-get-the-exif-data-from -a-file-using-c-sharp) –

+0

Я следил за данной ссылкой и смог получить данные exif, теперь я хочу открыть jpg с помощью приложения с помощью кнопки «Открыть с помощью» в меню правой кнопки мыши. –

+0

@ Bjørn-RogerKringsjå, это не то, что ОП задает –

ответ

1

Если вы знаете, как получить данные EXIF ​​уже и просто хочу, чтобы пользователи быть в состоянии правой кнопкой мыши файл JPG> открыть с помощью> Выберите приложение, а затем получить имя файла они пытаются открыть, вы можете сделать это:

private void testButton_Click(object sender, EventArgs e) 
{ 
    string[] cmdLineArgs = Environment.GetCommandLineArgs(); 
    string jpgFilenameToOpen = "None"; 

    if (cmdLineArgs.Length > 1) 
    { 
     jpgFilenameToOpen = cmdLineArgs[1]; 
    } 

    YourGetEXIFDetailsMethod(jpgFilenameToOpen); 
} 

Environment.GetCommandLineArgs() возвращает массив со всеми аргументами командной строки который был передан вашей заявке при загрузке. Обычно, если они просто передают имя файла, он должен быть вторым элементом массива.

Вы можете также цикл через аргументы, если это необходимо, делая это:

foreach (var arg in cmdLineArgs) 
{ 
    MessageBox.Show(arg.ToString()); 
} 

Edit:

Я просто понял, что я не уверен, что, если вам нужно принять только один JPG файла в время или если вам нужно сразу принять несколько файлов JPG. Если это последнее, вот некоторые обновленный код, который может перебрать все аргументы командной строки и делать что-то только файлы JPG/JPEG:

private void Form1_Load(object sender, EventArgs e) 
{ 
    string[] cmdLineArgs = Environment.GetCommandLineArgs(); 
    List<string> jpgFilenamesToAnalyze = new List<string>(); 

    foreach (var arg in cmdLineArgs) 
    { 
     if (arg.Contains(".jpg") || arg.Contains(".jpeg")) 
     { 
      jpgFilenamesToAnalyze.Add(arg); 
     } 
    } 

    if (jpgFilenamesToAnalyze.Count > 0) 
    { 
     StringBuilder sbJPGFiles = new StringBuilder(); 
     sbJPGFiles.AppendLine("Found " + jpgFilenamesToAnalyze.Count + " images to analyze:\n\nFiles:"); 

     foreach (var jpgFilename in jpgFilenamesToAnalyze) 
     { 
      // YourGetEXIFDataMethod(jpgFilename) 
      sbJPGFiles.AppendLine(jpgFilename); 
     } 

     MessageBox.Show(sbJPGFiles.ToString()); 
    } 
    else 
    { 
     MessageBox.Show("No images found to analyze"); 
    } 
} 
+0

Спасибо, что это работает .... Мне нужен код только для одного файла JPG –

Смежные вопросы