Одной из наиболее важных функций панели задач в Windows 7 являются списки переходов.
Списки переходов отображаются путем выделения значка приложения на панели задач и щелчка правой кнопкой мыши.
Если приложение использует функционал JumpLists, то помимо стандартных действий (закрепить, закрыть) появится ряд дополнительных действий, которые облегчают нашу повседневную работу.
Этот функционал панели задач активно используется различными приложениями.
Например, проигрыватель Windows Media отображает параметры переключения списков воспроизведения.
Internet Explorer и Windows Explorer содержат списки переходов со ссылками на последние посещенные вами места.
Windows Live Messanger отображает параметры переключения состояний.
Список переходов может содержать несколько различных типов элементов: задачи, ссылки на недавно открытые документы и ссылки на постоянные документы.
Кроме того, эти должности могут быть назначены.
Такие элементы не исчезнут из списка переходов со временем.
Это удобно, например, если мы часто работаем с одним и тем же документом.
Схематически список переходов можно представить следующим образом.
По сути, каждый элемент в списке переходов представляет собой ссылку на программу или файл.
Так, например, мы можем запустить калькулятор или любой документ заданного формата.
К сожалению, у нас нет возможности напрямую перехватывать событие нажатия на элемент в списке переходов.
Каждый раз, когда мы выбираем другой элемент, будет запускаться новый экземпляр приложения.
В первую очередь это связано с тем, что список переходов можно вызвать даже тогда, когда приложение не запущено.
В этом случае его необходимо закрепить на панели задач.
Например, на следующем рисунке вы можете видеть, что Internet Explorer в данный момент не запущен, но мы можем открыть список переходов.
Итак, давайте посмотрим, как такой функционал можно реализовать в наших приложениях.
Для работы со списком переходов нам понадобится объект типа JumpListManager, который является частью библиотеки примеров взаимодействия .
NET. Его необходимо создать в момент создания кнопки нашего приложения на панели задач.
Для этих целей вы можете переопределить метод WndProc следующим образом.
protected override void WndProc(ref Message m)
{
if (m.Msg == Windows7Taskbar.TaskbarButtonCreatedMessage)
{
_jumpListManager = WindowsFormsExtensions.CreateJumpListManager(this);
_jumpListManager.UserRemovedItems += (o, e) =>
{
e.CancelCurrentOperation = false;
};
// add items
_jumpListManager.Refresh();
}
base.WndProc(ref m);
}
Обратите внимание, что метод Refresh вызывается после создания объекта JumpListManager. Вызов этого метода необходим для обновления позиций в списке переходов.
Также обязательным действием является подписка на событие UserRemovedItems. Он выполняется при попытке удалить устаревшие элементы из списка переходов.
Давайте теперь попробуем добавить новые позиции в список переходов.
Для этих целей существуют классы-обертки и необходимые методы объекта JumpListManager. Самый простой тип элементов в списке переходов — это задачи.
Задача может заключаться в запуске внешнего приложения или нашего приложения с какими-то параметрами.
В WLM переключение состояний пользователя реализовано в виде задач.
Чтобы создать задачу в списке переходов, используйте метод AddUserTask. _jumpListManager.AddUserTask(new ShellLink
{
Path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "calc.exe"),
Title = "Калькулятор",
Category = "Applications",
IconLocation = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "calc.exe"),
IconIndex = 0
});
Как видите, здесь создается новый объект типа ShellLink, в который передается путь к приложению, заголовок и иконка.
Я добавил в свое приложение две задачи и получил следующий результат.
Еще один вариант заполнения списка перехода — ссылки на документы, скачанные ранее.
Для этих целей я создал несколько текстовых файлов с расширением «.
myapp» и связал этот тип файлов со своим приложением.
При запуске приложения я проверяю, передается ли имя файла в качестве параметра при запуске приложения.
Если указано имя, то я читаю этот файл и добавляю его в список ранее скачанных файлов.
Для этих целей существует метод AddToRecent. if (File.Exists(Environment.GetCommandLineArgs().
Skip(1).
FirstOrDefault() ?? String.Empty) == true) { _jumpListManager.AddToRecent(Environment.GetCommandLineArgs().
Skip(1).
FirstOrDefault() ?? String.Empty);
}
Теперь из проводника Windows я открою эти файлы.
Это запустит мое демонстрационное приложение (если мы правильно связали этот тип файла с приложением).
Более того, когда я вызову список переходов, я увижу, что в категории «Последние» появились ссылки на ранее открытые файлы.
Я могу закрепить те позиции, с которыми работаю чаще всего.
В этом случае я могу быстро открыть нужные мне документы через список переходов.
Другой способ размещения элементов в списке перехода — создание ссылок на постоянные документы/программы.
В этом случае мы также можем сгруппировать эти элементы по категориям.
Для этих целей существует метод AddCustomDestination. _jumpListManager.AddCustomDestination(new ShellLink
{
Path = @"about.txt",
Title = "О",
Category = "My application",
IconLocation = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "shell32.dll"),
IconIndex = 11
});
Я добавил несколько таких ссылок в список переходов и получил следующий результат.
На этом рисунке вы можете видеть, что появились две дополнительные группы со ссылками внутри.
Самое замечательное в списке переходов то, что его содержимое также доступно в меню «Пуск».
Так, например, если мы активно используем этот функционал, то его можно использовать и из меню «Пуск».
Таким образом, мы можем использовать дополнительные функции, которые предоставляет нам панель задач Windows 7, чтобы обеспечить максимально комфортную работу пользователя.
Демо-приложение: Панель задач-JumpLists.zip На этом завершаю свою серию статей по программированию панели задач для Windows 7. Надеюсь, эта информация будет полезна вам и вашим приложениям.
Особо хотелось бы отметить, что реализация возможностей панели задач Windows 7 для ваших приложений не потребует особых усилий, но результат не заставит себя ждать – общение с вашим приложением станет намного приятнее и удобнее.
Удачи в создании приложений для Windows7! Теги: #microsoft #Windows #Windows 7 #программирование #панель задач Windows 7 #Разработка для Windows
-
Новый Вид Фишинга
19 Oct, 24 -
Колоноскопия. О Щекотливой Теме Без Насмешек
19 Oct, 24 -
От Вавилона До Европы
19 Oct, 24 -
Пилотная Серия «Ночное Шоу Лямбда»
19 Oct, 24