wrongwrongな開発日記

しんまいさんの忘備録

【VB】タスクバーに進捗率を表示する【.Net】

Windows Vista以降ではタスクバーに以下の画像のような進捗を表示することができます。
f:id:wrongwrongwrongwrong163377:20180429165355p:plain
ということでシンプルなサンプルを作成しました。
GitHubにプロジェクト全体を上げてあります。
github.com

準備

プロジェクト

まずWindowsフォームアプリのプロジェクトを新規作成し、ボタンを1つ配置します。

Windows API Code Pack

今回はこの表示をWindows API Code Packを利用して行いました。これを使うためにはNuGetを用いてインストールを行う必要があります。今回は以下の記事の通りインストールを行いました。
Windows API Code Pack 1.1 をインストールする (C#プログラミング)
インストールが完了し、参照内にMicrosoft.WindowsAPICodePackとMicrosoft.WindowsAPICodePack.Shellが入っていれば準備完了です。
f:id:wrongwrongwrongwrong163377:20180429170537p:plain

コード

コードは以下の通りです。

Imports Microsoft.WindowsAPICodePack.Taskbar

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Button1.Enabled = False

        'タスクバーの色を緑(通常)に
        TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal)

        For i As Integer = 1 To 100
            TaskbarManager.Instance.SetProgressValue(i, 100)
            Threading.Thread.Sleep(100)
        Next

        TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.NoProgress)
        Button1.Enabled = True
    End Sub
End Class
解説

ボタンを押すとTaskBarの進捗が伸びていき、終わったらリセットされます。
別スレッドからやろうとかなんとか考えるとInvokeやらが必要になるそうですがとりあえずここまで。

更に詳しい記事

以下の記事ではより詳細な内容が解説されています。
www.atmarkit.co.jp