Как программно открыть окно JumpList для конкретного файла .exe? - PullRequest
2 голосов
/ 13 июля 2011

Я знаю, как создать JumpList для моего приложения. Но теперь я хочу показать JumpList для конкретного файла .exe. У меня есть путь к файлу '.exe', и мне нужно показать JumpList для этого приложения. Окно JumpList отображается, когда пользователь щелкает правой кнопкой мыши по значку приложения на панели задач, но мне нужно показать это окно программно.

Ответы [ 5 ]

2 голосов
/ 19 июля 2011

Из небольшого исследования, которое я провел, это можно сделать, открыв и прочитав содержимое файлов в% AppData% \ Microsoft \ Windows \ Recent \ AutomaticDestination

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

Редактировать: просто прочитайте ваш пост во второй раз: Простите, научил вас писать приложение для замены панели задач Windows. Ну, твой вопрос кажется жестким. Эти шаги могут работать:

  1. Сделайте скриншот рабочего стола и найдите часть, соответствующую значку приложения, которое вы ищете (который можно найти программно)
  2. Вычтите или сопоставьте изображение со скриншота, чтобы получить местоположение на экране
  3. Щелкните правой кнопкой мыши в этом месте на экране.

ps: код пакета API для Windows 7 также может оказаться полезным.

2 голосов
/ 19 июля 2011

Вы можете использовать Window Messages , чтобы сделать это. Вы можете использовать такой инструмент, как Spy ++ , чтобы узнать, как панель задач структурирует свои дочерние окна и т. Д. Как только вы поймете, как она работает, вам, скорее всего, потребуется SetFocus и отправлять сообщения типа WM_MOUSECLICK к нему.

Если каждая кнопка не является реальной кнопкой (это просто нарисованная «виртуальная» кнопка), вам потребуется математика, чтобы выяснить координаты для WM_MOUSECLICK (возможно, вам придется поэкспериментировать с WM_MOUSEDOWN и WM_MOUSEUP). Помните, что панель задач можно привязать к различным краям рабочего стола, а также использовать кнопки размером 16 пикселей.

Если это звучит как взлом, то я помню, как Microsoft специально говорила, что они не предоставят разработчикам такой уровень контроля с новой панелью задач.

Возможно, вы найдете PInvoke Wiki полезным для получения DllImport определений.

Я ранее взломал панель задач в XP (меню «Пуск»), так что это должно быть возможно в Windows 7.

1 голос
/ 07 ноября 2013

Вы можете использовать библиотеку "Teststack.White" (простой Nuget), а затем использовать эту

var desktop = Desktop.Instance;
var taskList = desktop.Get<ToolStrip>(SearchCriteria.ByClassName("MSTaskListWClass"));
var button = taskList.Get<Button>(SearchCriteria.ByText(Text));
button.RightClick();
0 голосов
/ 21 июля 2011

Если честно, я не проводил много времени с JumpLists.

Вы видели этот пример в Code Project? В нем много полезной информации.

http://www.codeproject.com/KB/WPF/MefFX.aspx

Статье несколько лет, но информация все еще хороша.

0 голосов
/ 14 июля 2011

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

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