2015-08-13 2 views
1

Я создал собственный тип файла (.track) и смог установить ассоциацию в параметрах публикации моего решения. После установки моей программы двойной щелчок на любом файле .track открывает мое приложение. Когда это произойдет, я хочу, чтобы программа загрузила содержимое файла, который был дважды щелкнул.C# Загрузка данных из связанного типа файла

public static void Main(string[] args) 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 

     if(args.Length == 1) 
     { 
      MessageBox.Show(args[0]); //For Debugging 
      Application.Run(new TrackerForm(args[0])); 
     } 
     else 
     { 
      MessageBox.Show(args.Length.ToString()); //Confirms that no arguments are passed. 
      Application.Run(new TrackerForm()); 
     } 
    } 

Я предположил, что путь файла с двойным щелчком будет передан приложению через аргумент командной строки. Однако двойной щелчок на файле связанного с ним типа файлов не передает никаких аргументов моему исполняемому файлу. Что именно происходит, когда файл связанного с ним исполняемого файла дважды щелкнут? Что мне нужно сделать, чтобы моя программа могла загрузить файл, который дважды щелкнут в проводнике Windows?

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

ответ

0

Когда вы дважды щелкаете файл, оболочка запускает его с помощью «Open» Verb. Глагол «Open» запускает приложение следующим образом:

"My Program.exe" "%1" 

«% 1» путь к файлу дважды щелкнули. Вы можете посмотреть эту страницу MDSN для получения дополнительной информации.

0

Решение, предоставляемое TJ Moats, работает. Однако я хотел документировать свои шаги.

  1. Чтобы попасть в нужное место в реестре, вам необходимо знать ProgID расширения.

    В обозревателе решений вы можете найти его, щелкнув правой кнопкой мыши по имени проекта, затем «Свойства»> «Опубликовать»> «Параметры»> «Файловые ассоциации». В моем случае это были настройки, которые я дал:

    Extension = .track | Description = File Tracker Data File | ProgID = .trackfile | Icon = Tracker.ico 
    
  2. Открывает Regedit, а затем перейдите к HKEY_CLASSES_ROOT>. Команда [ProgID]> shell> open>. В моем случае, ключ под:

    HKEY_CLASSES_ROOT\.trackfile\shell\open\command 
    
  3. Двойной щелчок по «(По умолчанию)» для редактирования данных ключа. Вам понадобятся две вещи: точный путь вашего исполняемого файла и «% 1». В моем случае, я сделал .exe был установлен в этот каталог в App Data:

    C:\Users\Bill\AppData\Local\Apps\2.0\W82CG2C9.L4C\3Q4LH0K1.HXH\file..tion_6762072d39e56a94_0001.0000_f0f46736a74a5052\FileTracker.exe 
    
  4. Теперь удалите значение внутри «(по умолчанию)». Замените его на путь .exe. Не включайте кавычки. Следуйте по пути .exe с одним пробелом, а затем «% 1». Вы должны включить цитаты, окружающие% 1.

    В моем случае, новое значение точно так, как он появляется в строке ниже:

    C:\Users\Bill\AppData\Local\Apps\2.0\W82CG2C9.L4C\3Q4LH0K1.HXH\file..tion_6762072d39e56a94_0001.0000_f0f46736a74a5052\FileTracker.exe "%1" 
    

После того, как новое значение было принято, мне не нужно делать ничего другого. Теперь, когда я дважды нажимаю на .track-файл, Windows Explorer передает путь к файлу с двойным щелчком в качестве аргумента командной строки для моего исполняемого файла FileTracker.exe.

Однако мне нужно повторять этот процесс каждый раз, когда я публикую новую версию, как новую.exe будет находиться в другой папке в AppData.

+0

Самый быстрый способ получить путь к исполняемому файлу - использовать диспетчер задач. Когда программа запущена, щелкните правой кнопкой мыши процесс и выберите «Открыть местоположение файла». Затем нажмите и удерживайте клавишу Shift и щелкните правой кнопкой мыши файл .exe. Затем выберите «Копировать как путь». Вы можете вставить этот скопированный путь в Шаг 4. Просто не забудьте удалить кавычки. – Bill

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