読者です 読者をやめる 読者になる 読者になる

Windows7のタスクバーを活用したモニタ「Taskbar Meters」

.net oss

Windowsアプリ(WPF)を起動して、タスクバーで、CPU、メモリ、ディスクI/Oを見れるアプリケーション「Taskbar Meters」。目盛のような感じでステータスが表示され、負荷が高い時は赤色、中ぐらいの時は黄色、低い時は緑色で表示されます。

アプリ自体はシンプルなものですが、Windows7のタスクバーを使うとステータスが一目でわかるというサンプルとしては面白いと思います。

アプリ本体のウィンドウ

コードの一部は次のような感じです。パフォーマンスカウンタから取得した値をWindows7タスクバーにセットしてます。Microsoft.WindowsAPICodePack.dllMicrosoft.WindowsAPICodePack.Taskbarを使っています。

public partial class App : Application
{
    private readonly PerformanceCounter _counter = new PerformanceCounter("PhysicalDisk", "% Disk Time", "_Total");

  protected override void OnStartup(StartupEventArgs e)
  {
    base.OnStartup(e);

    var mainWindow = new MainWindow();
    mainWindow.Tick += WhenTimerTick;
    mainWindow.Show();
  }

  private void WhenTimerTick(object sender, EventArgs e)
  {
        ((MainWindow)sender).SetTaskBarStatus((int)_counter.NextValue());
  }
}



public partial class MainWindow : Window
{
  public void SetTaskBarStatus(int value)
  {
    var state = TaskbarProgressBarState.Normal;

    if (value > _settings.Yellow)
    {
      state = value < _settings.Red ? TaskbarProgressBarState.Paused : TaskbarProgressBarState.Error;
    }

    // Microsoft.WindowsAPICodePack.TaskbarのTaskbarManagerにセット
    TaskbarManager.Instance.SetProgressState(state);
    TaskbarManager.Instance.SetProgressValue(value, 100);
  }
}