(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Программируем для Windows 7. Индикатор прогресса на панели задач (исходники)

Источник: habrahabr

Официальный выход Windows 7 не за горами, поэтому изучение новых возможностей операционной системы для программистов на C# становится актуальной. Новые веяния и правила для программистов появились уже при выходе Windows Vista с появлением UAC. Но Vista не получила широкого распространения у пользователей, поэтому программисты не очень активно изучали новое. С выходом Windows 7 ситуация может измениться в лучшую сторону. Я решил создать на своем сайте отдельный раздел, посвященный именно программированию под Window 7.

На Хабре уже был цикл примеров, посвященных программированию под Windows 7. Но эти примеры выходили в то время, когда Win7 была еще в бета-версии. Поэтому я заносил статьи в закладки, чтобы вернуться к ним позже. Мне не хотелось ставить бета-версию на рабочую машину. Но недавно я все-таки поставил себе Windows 7 и очень ею доволен.

Теперь, когда у меня уже стояла Win7, можно было приступать к изучению тех материалов, которые я занес в закладки. Но, оказалось, что примеры немного устарели. Появились новые библиотеки с другими классами и пространствами имен. Поэтому пришлось изучать новинки с нуля. Кроме того, опубликованные примеры были расчитаны на достаточно опытных программистов, поэтому были опущены некоторые мелкие детали, как нечто само собой разумеющееся.

А начнем мы с примера создания индикатора прогресса (ProgressBar) на панели задач.

Но, сначала нужно подготовиться. Скачиваем Windows API Code Pack для Microsoft .NET Framework. Это мощный пакет, призванный помочь разработчикам создавать приложения для Windows 7 (и частистно Windows Vista) с помощью .NET. Пакет представляет собой библиотеку исходных кодов, используемых для доступа к некоторым новым функциям Windows через управляемый код.

Распакуйте архив с файлами и запустите решение WindowsAPICodePack.sln. По умолчанию в качестве StartUp-проекта будет использоваться проект Shell. Нас это вполне устраивает, так как именно здесь находятся необходимые нам классы для работы с панелью задач. Выбираем в меню Build / Build Shell и получаем в папке ..\WindowsAPICodePack\Shell\bin\Debug файл Microsoft.WindowsAPICodePack.Shell.dll. Это и есть наша библиотека, которую мы будем использовать в своих проектах.
Теперь запускаем Visual Studio и создаем новый проект Windows7TaskBarProgressBarDemo. В Solution Explorer щелкаем правой кнопкой на папке References и выбираем пункт Add Reference. В диалоговом окне переключаемся на вкладку Browse и находим созданную нами библиотеку Microsoft.WindowsAPICodePack.Shell.dll. Переключаемся в режим редактирования кода и прописываем строчку
using Microsoft.WindowsAPICodePack.Taskbar;

На этом первые приготовления закончены.

Добавляем на форму таймер и кнопку, которая будет запускать таймер. Пора рассказать о цели нашего приложения. Предположим, мы поставили на плиту молоко для подогрева. Но нам не хочется стоять у плиты, а хочется почитать новую статью на Хабре. Вы убеждаете себя, что за минуту ничего страшного не произойдет и молоко не убежит. Но, читая интересную статью, время не замечаешь. Результат плачевен. Попытаемся установить контроль над временем.
Итак, устанавливем у таймера интервал, равный 1000 (1 секунда) и пишем код:

TaskbarManager instanceTaskBar = TaskbarManager.Instance;
static int counter = 0;

private void butStartTimer_Click(object sender, EventArgs e)
{
  instanceTaskBar.SetOverlayIcon(null, "");
  timerCook.Enabled = true;
}

private void timerCook_Tick(object sender, EventArgs e)
{
  counter += 1;
  instanceTaskBar.SetProgressValue(counter, 60);

  if (counter >= 60)
  {
    timerCook.Enabled = false;
    
    counter = 0;
    instanceTaskBar.SetProgressValue(0, 60);
    instanceTaskBar.SetOverlayIcon(Windows7TaskBarProgressBarDemo.Properties.Resources.Ready, "Готово");
  }
}

* This source code was highlighted with Source Code Highlighter.

Теперь пояснения к коду. За раскраску кнопки приложения на панели задач в виде индикатора прогресса отвечает метод SetProgressValue. Запуская таймер, мы увеличиваем значение счетчика каждую секунду и доводим его до максимального значения (в нашем случае до 60). Когда счетчик достигнет своего потолка, нужно как-то визуально показать пользователю, что операция завершена. Для этой цели я решил воспользоваться методом SetOverlayIcon, о котором расскажу в другой раз.
Итак, как это выглядит на практике. Ты ставишь молоко на плиту, садишься за компьютер и нажимаешь кнопку, запускающую таймер. Теперь можешь переключиться на браузер и читать статью на Хабре. Краем глаза по индикатору ты всегда можешь контроллировать, сколько времени осталось для чтения.

После окончании минуты на панели задач появляется значок, сигнализирующий об окончании процесса.

Как видите, все очень просто.
В нашем примере использовался стандартный индикатор прогресса зеленого цвета (режим Normal). Существуют и другие варианты: NoProgress, Indeterminate, Error, Paused. Посмотреть, как они выглядят, можно на уже упоминавшейся странице Программируем Windows 7: Taskbar. Часть 1 - Progress Bar / Windows 7 / Хабрахабр

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

Если у кого-то возникнут трудности с примером, то чуть позже я выложу исходники на сайте в разделе Windows 7. Удачи в освоении Window 7!

Ссылки по теме


 Распечатать »
 Правила публикации »
  Обсудить материал в конференции Microsoft »
Обсудить материал в конференции Дизайн, графика, обработка изображений »
Написать редактору 
 Рекомендовать » Дата публикации: 14.09.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft SQL CAL 2017 Sngl OLP 1License NoLevel UsrCAL
Microsoft Office 365 Бизнес премиум. Подписка на 1 рабочее место на 1 год
Microsoft Visual Studio Professional 2017 Russian Academic OLP 1License NoLevel
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft Windows Professional 10, Электронный ключ
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Windows и Office: новости и советы
ЕRP-Форум. Творческие дискуссии о системах автоматизации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Настройка меню "Пуск" Windows 7 при помощи реестра (3)
Скажите пожалуйста, а как можно закрепить ярлыки программ с помощью твиков реестра в левой части...
 
Ищу программиста PYTHON (1)
Ищу программиста для написание программ python 3 + библиотека tkinter Есть данные в БД...
 
Пишу программы на заказ профессионально (2265)
Пишу программы на заказ на языках Pascal (численные методы, списки, деревья, прерывания) под...
 
Ищу программиста для написания программы (17)
Ищу программиста ,владеющего Вижуал Бэйсик и программированием в Экселе, для написания...
 
Программы Delphi на заказ (236)
Пишу программы в среде Delphi на заказ http://bddelphi.ucoz.ru/
 
 
 



    
rambler's top100 Rambler's Top100