@Shadom

Как передать путь к ярлыку (*.lnk) в приложение?

Всем привет.

Есть приложение на C# и часть его функционала вызывается через кнопки контекстного меню Windows.
Т.е. работаем в проводнике или файловом менеджере, клацаем правой кнопкой мыши на файле, выбираем действие и получаем результат. Для этого я добавил в реестр раздел с подразделом "command", содержащий подобное значение:
"C:\path_to_app\App.exe" "%1"
Таким образом запускается приложение и в качестве 1-го аргумента ему передается путь к выбранному файлу (с помощью "%1").
И всё бы хорошо, но если воспользоваться такой кнопкой на *.lnk файле (ярлыке), то в приложение передается не его путь, а путь к файлу, на который он указывает (shortcut's target). А мне нужен именно путь к ярлыку, выделив который я нажал на кнопку.
Есть ли какие-то варианты с редактированием подраздела "command" или чем-то другим, чтобы отправить приложению путь к ярлыку, а не к файлу, на который он указывает?
  • Вопрос задан
  • 361 просмотр
Решения вопроса 1
@Shadom Автор вопроса
Вдруг, кому-то пригодится:
В моем случае было важно, чтобы приложение было доступно при работе в Total Commander'е.
И я нашел такое решение:
На панели TC выбираем Запуск -> Изменить меню "Запуск", потом Добавить.
И настраиваем подобный пункт меню.
5a055aeee0972264740724.png
где %P - Вставляет в командную строку исходный путь, включая обратную косую черту (\) в конце.
а %S - Помещает в командную строку имена всех выбранных файлов. Имена, содержащие пробелы, будут взяты в кавычки.
По пути Конфигурация -> Настройка -> Разное -> Переопределить горячие клавиши этот пункт меню можно повесить на сочетание клавиш (cm_UserMenu<№ пункта>).

Таким образом, в приложение будет передан полный путь к выделенному файлу.
А уже в программе используем нечто вроде
string[] args = Environment.GetCommandLineArgs();

if (args.Length > 1)
{
	string filePath = args[1].ToString();
	// дальнейшие действия
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@res2001
Developer, ex-admin
Нет вариантов, имхо. Это поведение оболочки виндоуз.
Ответ написан
Комментировать
Griboks
@Griboks Куратор тега C#
В своё время использовал какую-то библиотеку для работы с ярлыками с codeproject.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы