タイマーを使ってフォームの定期更新 [PowerShell]
PowerShellでWindowsフォームによるGUIを使ってみています。表示内容の定期的な自動更新を行うために、タイマーを利用した例を書いておきます。
PowerShellでのGUIとはいえ独自の世界があるわけではなく、Windowsフォームの知識があれば書けるということになっているようです。
今回試してみたいタイマーについても、MSDNの次のページに説明はあるのですが、残念ながら使用例としては- Visual Basic
- C#
- J#
- Visual C++
「Windows フォームの Timer コンポーネントを使用して一定間隔でプロシージャを実行する」
http://msdn.microsoft.com/ja-jp/library/3tszykws.aspx
ということで原理についてはわかったつもりでも、実際にPowerShellで書くには、コールバックの書き方などの文法の細かい部分を理解するのに少し試行錯誤が必要でしたので、忘れないためにもここに記録しておきます。いや、わかってしまえば単純なんですけどね。
空っぽのフォームを作って、そのタイトルに現在時刻と更新回数を表示するだけのとても単純化した例です。
[void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
$timerTest = New-Object Windows.Forms.Timer
$counter = 0
$timerTestTick = {
$formInfo.text = "{0} ({1})" -f (Get-Date), $counter++
}
function ShowInfoMain
{
#=== タイマーの初期化
$timerTest.Add_Tick($timerTestTick)
$timerTest.Interval = 200
$timerTest.Enabled = $TRUE
$timerTest.Start()
#=== フォームを作って表示
$formInfo = CreateFormInfo
[void]$formInfo.ShowDialog()
}
function CreateFormInfo
{ # フォームの定義
$form = New-Object Windows.Forms.Form
# ここでその他の要素を定義する
$form
}
. ShowInfoMain