В «Избранное»/Сделать стартовой 
 
Что нового в Windows 7 для пользователей Коллекция обоев региональных сборок Windows 7 Коллекция обоев региональных сборок Windows 7 Информер для вашего сайта
  Войти   Зарегистрироваться     Забыли пароль?
 

deeper2k @16.06.2009 11:16
Просмотры (только пользователи): 7050
Комментарии: (10)
Рейтинг:

Программируем панель задач Windows 7 (ч.1)

Новая операционная система Windows 7 содержит большое количество нововведений и улучшений. Эти улучшения касаются безопасности, производительности, надежности и т.д. Серьезное внимание также уделено и пользовательскому интерфейсу. Для разработчиков ПО на платформе Windows новая ОС также представляет интерес, т.к. в ней содержатся элементы, на которые можно воздействовать программно. В течении нескольких постов мы поговорим об основных нововведениях и программной модели для них.

Первое что бросается в глаза при работе с Windows 7 - это, конечно, обновленный task bar. В новом taskbar’е действительно много концептуальных изменений. Одно из таких изменений - возможность отображения прогресса выполнения задачи (progress bar).



На этом рисунке хорошо видно, что прямо на панели задач отображается информация о процессе копирования. Такая функциональность реализована в Windows 7 для копирования файлов на диске, загрузке данных из сети (IE8). Однако, важно, что эту функциональность мы можем использовать и для своих приложений. Сценариев может быть огромное количество - отображение процесса преобразования, копирования, формирования данных, построение отчетов, генерация изображений, и т.д.

С точки зрения разработчика клиентских приложений для Windows, процесс использования данной функциональности представляется достаточно просто. Взаимодействие с ОС происходит на unmanaged уровне, поэтому для .NET приложений необходима реализация управляемых оберток. Всю эту работу уже проделали разработчики из Microsoft и поместили это в библиотеку .NET Interop Sample Library.

Библиотека .NET Interop Sample Library состоит из множества компонентов и демонстрационных приложений. Мы не будем подробно останавливаться на каждом из них. Для нас важно, что в ее состав входит Vista Bridge Sample Library, Windows7.DesktopIntegration и Windows7.DesktopIntegration.Registration.

Проект "Windows7.DesktopIntegration" содержит те классы, которые необходимы нам для работы с taskbar’ом. В составе этого проекта есть класс WindowsFormsExtensions, который содержит набор методов расширения (extension methods) для класса Form (Windows Forms). В нашем случае нас интересуют сдледующие методы:

    SetTaskbarProgress(float percent)
  • SetTaskbarProgressState(ThumbnailProgressState state)

Вызов первого метода позволяет указать процент выполнения текущей задачи. Т.к. это методы расширения для класса Form, то этот класс передается в метод в качестве параметра. Это необходимо для того, чтобы определить handle окна, для которого выполняются действия.

Код:
// процесс выполнения = 35%

// вызов метода расширения
WindowsFormsExtensions.SetTaskbarProgress(this, 35);

// или так
(this = Form)this.SetTaskbarProgress(35);

У нас также имеется возможность указать состояние прогресс-бара. Доступные состояния:

    NoProgress - прогресс не отображается
  • Indeterminate - прогресс бар постоянно мерцает
  • Normal - обычное отображение прогресса
  • Error - отображение ошибки
  • Paused - отображение паузы

Задание состояние прогресс-бара осуществляется при помощи второго метода.

Код:
WindowsFormsExtensions.SetTaskbarProgressState(this, Windows7Taskbar.ThumbnailProgressState.Normal);

// или так

this.SetTaskbarProgressState(Windows7Taskbar.ThumbnailProgressState.Normal);

К сожалению, методы расширения существуют только для WinForms приложений. Однако, несложно построить подобный класс и для WPF приложений (см. демо-приложение).

В итоге я собрал небольшое приложение, которое демонстрирует возможности прогресс-бара в панели задач Windows 7. Выглядит оно следующим образом.



С помощью управляющих кнопок мы можем указать текущее значение прогресс-бара, а также можем выбрать его состояние.


Режим "Normal"


Режим "Indeterminate"


Режим "Error"


Режим "Paused"


Загрузить демо-приложение Taskbar-Progress можно отсюда. Удачи вам в разработке ваших приложений для Windows 7!

Sergey Zwezdin, TheVista.Ru Team
Microsoft Most Valuable Professional, Microsoft Regional Director
июнь 2009


Понравилась статья? Добавьте её в  или оцените 


Этот сайт приносит прибыль с помощью Бегуна

В тему:



 
Поиск по сайту
Навигация
Новости
Форумы
Статьи
Галерея
Файлы
Ссылки

Поиск
Карта сайта
О Проекте
Команда
Вакансии
Реклама
Связь с нами

Что нового
Статистика
Переходы
Экспорт
RSS-канал
Информер
Облако
Windows Vista  Windows 7  Windows Longhorn  Windows Server  Windows Home Server  Office System  Windows Internet Explorer  Windows Media Player  Windows Vienna  Windows Fiji  Информационная Безопасность  Windows Phone  Windows Live  Microsoft System Center  SQL Server  Exchange Server  Silverlight  Microsoft Surface  Hyper-V  WinFS  WPF  .NET  Microsoft Visual Studio  Продукты Microsoft  Технологии  Железо  IT Мероприятия  Microsoft  Коротко  Файлы  Ссылки  Обзоры  Галерея  Windows 7  Windows Vista  Windows Longhorn  Mac Office System  Internet Explorer  Другие продукты  Железо  Мануалы  Windows Vista  Windows Internet Explorer  Система Windows Vista  FAQ (ЧАсто задаваемые вопросы)  Windows Presentation Foundation  Экскурс в историю  Windows 7  Windows Vista  Windows Longhorn  Office System  Windows  Microsoft Office  Продукты Microsoft  Windows Tools  Гаджеты  Официальная документация  Обновления  Драйверы  Темы  Обои  Мутогены  Видео  Ссылки 
Магазин