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

Рассмотрим пример создания индикатора прогресса (ProgressBar) на панели задач. Запускаем 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, 
            "Готово");
    }
}

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

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

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

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

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

Реклама

Организация высотных работ - удаление деревьев . Профессиональная обрезка деревьев.