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

Для початку завантажте Visual Studio 2008 Express Edition або більш повну версію (C # або VB). Або просто візьміть Visual Studio +2010 Beta 2 – вона вже доступна і вартий того, щоб її завантаження. Всі Express-видання безкоштовні, і будь-яка з версій (2008 або 2010) буде прекрасно працювати з кодом, супутнім цієї статті.


Що таке список переходів?


Списки переходів – нова концепція в Windows 7, Що дозволяє розробнику створювати ярлики (shortcuts) для користувачів прямо в контекстному меню значка своєї програми на панелі задач або в меню Пуск (Start). Ці ярлики можуть бути простими посиланнями на папку документів або бібліотеку цього додатка, або посиланнями на командний рядок запуску того ж додатка з передачею будь-якого параметра для виконання якоїсь специфічної задачі.


Ви можете використовувати цей спосіб в Live Messenger для зміни онлайнового стану, виведення нового вікна повідомлення або для відкриття веб-сторінок, що відносяться до додатка. Загалом, все це позначки – до URL або того ж виконуваного файлу з аргументом, що викликає якесь зміна.


Windows API Code Pack


Windows API Code Pack дає можливість задіяти переваги специфічних засобів Windows Vista і Windows 7, недоступних через універсальну інфраструктуру, а також некерованих функцій, які не мають сенсу в загальномовного виконуючого середовища (CLR), що використовується у всіх підтримуваних конфігураціях. Велика частина таких засобів складається з interop-оболонок (що дозволяють взаємодіяти з некерованими функціями з керованого коду).


За допомогою Code Pack ви отримуєте доступ до нової панелі завдань, Direct2D, DirectWrite, властивостями оболонки, списками переходів і ін У комплект також включені численні проекти з прикладами коду, які послужать вам відправною точкою, так що уникати нових можливостей немає ніяких причин!


Додавання списку переходів


Додати список переходів легко. Створивши сам список, включіть в нього потрібні елементи (ярлики файлів або папок і завдань). Потім можна вибрати, як будуть показуватися самі останні або часто використовувані документи. Windows управляє списком документів користувача, що знімає з вас частину роботи.


Важливо відзначити, що для внесення будь-яких змін список потрібно створювати заново. Інакше кажучи, ви замінюєте старий список новим, а не оновлюєте його.


Ось як все це робиться.


Спочатку додайте дві обов'язкові посилання з Windows API Code Pack. Ви можете або скомпілювати проект і посилатися на DLL, або безпосередньо включити необхідні проекти до свого рішення:


Для зручності можна додати простір імен до блоку using, щоб потім набирати більш короткий текст:


Visual Basic


Imports Microsoft.WindowsAPICodePack.Taskbar


Imports Microsoft.WindowsAPICodePack.Shell


Visual C#


using Microsoft.WindowsAPICodePack.Taskbar;


using Microsoft.WindowsAPICodePack.Shell;


Клас Microsoft.WindowsAPICodePack.Taskbar.JumpList – те місце, де розгортається велика частина дійства. Для створення списку призначений статичний метод-фабрика CreateJumpList. Завжди починайте з виклику цього методу, навіть якщо додаток раніше створювало список переходів.


Visual Basic


Private Sub CreateJumpList()


Dim jl As JumpList = JumpList.CreateJumpList()


Visual C#


private void CreateJumpList()


{


JumpList jl = JumpList.CreateJumpList();


Далі у вас є вибір з декількох варіантів – залежно від того, що саме ви хочете побачити у списку. Базовою групою є список файлів. Ви можете вибрати відображення Recent files (останні файли), Frequent files (часто використовувані файли) або жоден з них, але не обидва варіанти одночасно. Якщо ви нічого не вибираєте на цьому етапі, то автоматично отримаєте варіант Recent files – за умови, що у вас є зареєстрований тип файлів.


Visual Basic


"Показуємо користувача файли: Recent, Frequent або None


jl.KnownCategoryToDisplay = JumpListKnownCategoryType.Recent


Visual C#


/ / Показуємо користувача файли: Recent, Frequent або None
jl.KnownCategoryToDisplay = JumpListKnownCategoryType.Recent;


Тепер ви можете додати одну або більше власних категорій елементів. Це можуть бути або папки, або файли. Тут діють два дуже важливих правила.



  1. Файли / папки повинні існувати! При необхідності перевірте шлях перед додаванням JumpListItem; якщо його немає, відбудеться збій.

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

У даному випадку я закоментувавши останній елемент, але ви могли б використовувати JumpListItem для реальних файлів у файловій системі та об'єкти JumpListLink для посилань, що не відносяться до файлової системи. І знову не додавайте JumpListItem, якщо не впевнені в його наявності і в тому, що він зареєстрований.


Visual Basic


"Додаю свої посилання (іменники)


Dim catActions As New JumpListCustomCategory(“Destinations”)


catActions.AddJumpListItems(


New JumpListLink (Environment.GetFolderPath (Environment.SpecialFolder.MyPictures), "My Pictures"), _


New JumpListLink ("http://blogs.msdn.com/coding4fun", "Visit Coding4Fun"), _


New JumpListLink ("http://code.msdn.microsoft.com/WindowsAPICodePack", "Windows API Code Pack"))


“new JumpListItem(@”c:Test1.c4f”)


jl.AddCustomCategories(catActions)


Visual C#


/ / Додаю свої посилання (іменники)


JumpListCustomCategory catActions = new JumpListCustomCategory ("Destinations");


catActions.AddJumpListItems(


new JumpListLink (Environment.GetFolderPath (Environment.SpecialFolder.MyPictures), "My Pictures"),


new JumpListLink ("http://blogs.msdn.com/coding4fun", "Visit Coding4Fun"),


new JumpListLink ("http://code.msdn.microsoft.com/WindowsAPICodePack", "Windows API Code Pack")


//new JumpListItem(@”c:Test1.c4f”)


);


jl.AddCustomCategories( catActions);


Ви можете додати одну або більше завдань як посилання на виконувані файли, використовуючи метод AddUserTasks об'єкта JumpList. При цьому або створюйте декілька об'єктів і додайте їх як змінний список аргументів, або додайте їх по одному одноразово, як це зробив я.


Visual Basic


"Додаємо завдання наших користувачів (дієслова)


jl.AddUserTasks (New JumpListLink (Path.Combine (systemFolder, "notepad.exe"), "Open Notepad") _


With {. IconReference = New IconReference (Path.Combine (systemFolder, "notepad.exe"), 0)})


Visual C#


"Додаємо завдання наших користувачів (дієслова)


jl.AddUserTasks (new JumpListLink (Path.Combine (systemFolder, "notepad.exe"), "Open Notepad")


{


IconReference = new IconReference (Path.Combine (systemFolder, "notepad.exe"), 0)


});


Властивість IconReference вказує на значок, посилаючись на DLL-або EXE-файл і задаючи індекс у цьому файлі. Якщо ви хочете отримати значок за замовчуванням для виконуваного файлу, з яким ви здійснюєте зв'язування, вказуйте EXE-файл з нульовим індексом.


У список можна додавати роздільники. Роздільник представлений класом JumpListSeparator і може бути доданий викликом AddUserTasks.


Visual Basic


jl.AddUserTasks(New JumpListSeparator())


Visual C#


jl.AddUserTasks(new JumpListSeparator());


Останні посилання у списку переходів вказують на наш же виконуваний файл. Це найбільш поширений варіант використання списків переходу. Простий список з останніми або часто використовуваними файлами, звичайно ж, – штука хороша, але можливість ініціювати якісь операції в самій програмі, навіть якщо вона не запущена, по-справжньому зручна. Це майже меню параметрів командного рядка запуску програми!


Команди у списку, що запускають операції в самому додатку, вимагають виклику цього додатка з різними аргументами. Пам'ятайте, що це не справжнє меню – ви не отримаєте подія Click. Замість цього потрібно обробляти аргумент, переданий вашій програмі, навіть якщо вона вже виконується.


Перший аргумент в командному рядку завжди є повним ім'ям файлу, що виконується (разом зі шляхом). Властивість Arguments дозволяє вказувати аргументи командного рядка, безпосередньо не видимі користувачам. У цьому прикладі я визначив три аргументи-заглушки. Якщо один з них передається, додаток змінює тло мітки і повідомляє, який аргумент був переданий.


Visual Basic


jl.AddUserTasks (New JumpListLink (Assembly.GetEntryAssembly (). Location, "Action 1 (Green)") _


With {. Arguments = "-1",. IconReference = New IconReference (Assembly.GetEntryAssembly (). Location, 0)})


Visual C#


jl.AddUserTasks (new JumpListLink (Assembly.GetEntryAssembly (). Location, "Action 1 (Green)")


{


IconReference = new IconReference (Assembly.GetEntryAssembly (). Location, 0),


Arguments = “-1”


});

 

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*