Как получить путь к файлу ярлыка (.lnk) в программе, которая запускается по ярлыку? - PullRequest
1 голос
/ 25 декабря 2011

У меня есть программа на c #, которая открывает файл * .postfix.

Если пользователь запускает ярлык (.lnk), который указывает на мой тип файла, моя программа откроет цель.

Итак, как моя программа могла узнать, что она запускается с помощью (.lnk) ярлыка (и получить путь к файлу)?

В некоторых случаях мне нужно заменить файл .lnk.

Спасибо!

1012 * Отредактировано * Во-первых, спасибо ребятам, которые ответили на мой вопрос.

Следуя ответу @Anders, я обнаружил, что моя проблема лежит здесь.

Я внес некоторые изменения в реестр Windows, так что браузер знает, как перевести настроенную строку протокола в определенную программу.

что-то вроде этого ..

[InternetShortcut] URL = myProtocol: //abcdefg.....

Возможно, поэтому я потерял lpTitle. (

Я собираюсь попробовать так: Всякий раз, когда вызывается моя программа, разумеется, получающая% 1, она проверяет текущий открытый проводник (Window) и пытается получить его текущий путь с помощью IWebBrowserApp. С этим путем и рабочим столом, конечно, отсканируйте и проанализируйте * .lnk, чтобы определить, какой из них заменить.

Я думаю, что это, вероятно, будет работать, но не уверен. Я попробую. продолжали

Ответы [ 3 ]

3 голосов
/ 25 декабря 2011

В нативном коде вы можете вызвать GetStartupInfo , если бит STARTF_TITLEISLINKNAME установлен в STARTUPINFO.dwFlags, то путь к .lnk находится в STARTUPINFO.lpTitle.Я не знаю, если есть .NET способ получить эту информацию, вам, вероятно, придется P / Invoke ...

3 голосов
/ 25 декабря 2011

Ты не.Там нет никакого способа сделать это.Конец истории.

0 голосов
/ 25 декабря 2011

Если вы используете Visual Studio Setup Project для создания установщика и сопоставления типов файлов, следуйте этим инструкциям http://www.dreamincode.net/forums/topic/58005-file-associations-in-visual-studio/

  1. Откройте свое решение в Visual Studio.

  2. Добавление проекта установки в решение с помощью файла, добавление проекта, нового проекта, проектов установки и развертывания, проекта установки

  3. Щелкните правой кнопкой мыши ваш проект установки в окне «Solution Explorer», выберите «View», затем выберите типы файлов.

    Вы увидите окно «Типы файлов», отображаемое в Visual Studio. В верхней части окна будет «Типы файлов на целевом компьютере»

  4. Щелкните правой кнопкой мыши «Типы файлов на целевом компьютере». Появится меню с надписью «Добавить тип файла». Нажмите на это.

    Вы увидите добавленный «Новый тип документа № 1» и «& open» под ним.

  5. «Новый тип документа # 1» может быть чем угодно - измените его на что-то описательное. Хотя пользователь никогда этого не видит, никогда не используйте что-то общее - будьте настолько уникальны, насколько это возможно, потому что вы можете наложить текущие ассоциации файлов даже без Понимая это. Например, вы можете подумать, что «pngfile» может быть полезным именем, но при его использовании теперь все файлы «*. png» будут отправляться в ваше приложение, а не в просмотрщик изображений. Хорошей практикой может быть «YourCompantName.Filetype». ", где название вашей компании - это имя вашей компании, а" Тип файла "- описательный текст вашего файла.

  6. В окне «Свойства» для вашего нового типа вам нужно будет изменить несколько свойств .: Команда: Перейдите в приложение, которое вы хотите запустить. Если вы нажмете «...», и вам, вероятно, захочется найти и использовать файл «Первичный вывод ...» Описание: это описание типа файла (если оно не описывает себя) Расширения: это ваш список расширений для выбранной вами Программы. Разделяйте каждое из них знаком "," Значок: это будет связывать значок с вашим типом файла, это отображается в проводнике.

  7. Теперь мы переходим к этому «& open». Это действие, которое доступно, если щелкнуть файл правой кнопкой мыши. Действие по умолчанию («& Open» в настоящее время установлено по умолчанию) - это то, что происходит при двойном щелчке файла. Щелкните правой кнопкой мыши на «Новый тип документа № 1», чтобы добавить действия, но на данный момент давайте определим наше действие «& открыть»

    Нажмите «& Открыть». Вы увидите в окне свойств «Имя», «Аргументы», «Глаголы». Глагол скрыт от пользователя, но является ключом, который хранится в реестре. Оставьте его таким же, как и имя, но без «&». По умолчанию «Аргументы» - «% 1», что означает пропуск полного путь и имя файла к вашему приложению. Вы также можете добавить сюда другие вещи, если вам нужно передать флаги вашему приложению для выполнения специальных действий. Все эти данные передаются вашему приложению в командной строке, поэтому вам нужно быть знакомым с объектом "Environment.CommandLine".

    Если вам нужно установить другое действие по умолчанию, просто щелкните правой кнопкой мыши на действии и выберите «установить по умолчанию»

По сути, вы передадите путь к файлу в качестве аргумента вашей программе. Затем, если это консольное приложение или Windows Forms, вы должны проверить аргументы в Program.Main


static void Main(string[] args)
{
  //if file association done with Arguments %1 as per forum post above  
  //you file path should be in args[0]
  string filePath = null;
  if(args != null && args.Length > 0)
     filePath = args[0];
}

Для приложения WPF вам необходимо обработать это в событии StartUp для вашего приложения


 void App_Startup(object sender, StartupEventArgs e)
 {
    string filePath = null;
    if ((e.Args != null) && (e.Args.Length > 0))
    {
       filePath = e.Args[0];
    }
 }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...