Список переходов Windows 7

Я думаю, это то, что это называется:

Я хочу иметь возможность добавлять такие вещи в мою программу. Например, кнопка открытия и другие кнопки, которые будут выполнять метод в приложении. Это в C#, кстати.

Я смотрел на Windows 7 API Code Pack, но он... не работает так, как я хочу. Это не позволит мне выполнить метод внутри моего приложения, как я хочу. Это просто позволяет открывать другие приложения.

Возможно ли что-то подобное?

3 ответа

Решение

Я думаю, это вы, кто не понимает, как работают JumpLists. "Это просто позволяет вам открывать другие приложения" Это именно то, что он делает, и ничего больше. Это функция Windows 7, а не ограничение API Code Pack. Ключевым моментом в этом является тот факт, что ваше приложение не запущено, поэтому ГДЕ должно выполняться ваш метод? Правильная реализация будет состоять в том, чтобы ваш JumpList запускал ваше приложение с правильными параметрами, а затем внутри вашего метода Main вызывал различные методы в зависимости от этих параметров. Не забывайте, что даже оконные приложения имеют входные параметры, как консольные приложения.

Если вы посмотрите на Outlook и Messenger, они вызывают другие команды в приложении, так что вы знаете, что это возможно. Но, как говорит @Euphoric, архитектура списков переходов действительно проста - выбор места назначения (например, имени файла или URL-адреса) приводит к тому, что Windows запускает другой экземпляр приложения и передает это место назначения в качестве аргумента командной строки. Выбор задачи приводит к тому, что Windows запускает эту задачу, которая должна быть другой программой.

Как решить этот кажущийся парадокс? Другой exe - вспомогательный exe, который связывается с основным приложением. Примеров этого не хватает, но я работаю над демо-презентацией в начале ноября и буду публиковать ее в блоге, когда я это сделаю. Возможно, этот архитектурный указатель поможет вам начать.

Назначьте URL-адреса элементам списка переходов и используйте прослушиватель HTTP для вызова методов вашего приложения. Как это сопоставление URL с C# HttpListener

Кроме того, вы можете пойти по неудобному маршруту и ​​использовать общий мьютекс, чтобы сделать ваше приложение единственным экземпляром и пересылать аргументы командной строки через именованный канал. Но http-слушатель приятнее;)

Другие вопросы по тегам