下記記事で簡易的なUIとして手軽なHTAを使いました。
PowerShellでGUIアプリを作る場合はどうするのだろう?と調べたところ、すぐにその方法が見つかりました。
- PowerShell再入門:16. GUI
- http://m0t0k1x2.tumblr.com/post/122833950209/powershell%E5%86%8D%E5%85%A5%E9%96%8016-gui
- PowerShellでWPFしたい Part2 – XAML編
- http://tech.guitarrapc.com/entry/2013/03/14/190337
- PowerShellとWPFでシンプルGUIプログラミング
- http://d.sunnyone.org/2012/06/powershellwpfgui.html
なるほど。Windows FormsかWPFを使えば良いわけですね。
どうせ試すならリボンUIで実装してみよう!というわけで、さっそくコードを書いてみました。
Add-Type -AssemblyName PresentationFramework
Add-Type -Assembly System.Windows.Forms
Add-Type -AssemblyName System.Windows.Controls.Ribbon
[xml]$xaml = @'
<RibbonWindow
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="300" Width="300"
>
<Ribbon>
<Ribbon.ApplicationMenu>
<RibbonApplicationMenu Visibility="Collapsed" />
</Ribbon.ApplicationMenu>
<RibbonTab Header="Tab1">
<RibbonGroup Name="grp1" Header="Group1">
<RibbonButton Name="btnSample" Label="Sample" FontSize="11pt" />
<RibbonButton Name="btnExit" Label="Exit" FontSize="11pt" />
</RibbonGroup>
</RibbonTab>
</Ribbon>
</RibbonWindow>
'@
$reader = (New-Object System.Xml.XmlNodeReader $xaml)
$window = [Windows.Markup.XamlReader]::Load($reader)
$btnSample = $window.FindName("btnSample")
$btnSample.add_Click({
[System.Windows.Forms.MessageBox]::Show("Hello world", "Sample")
})
$btnExit = $window.FindName("btnExit")
$btnExit.add_Click({
$window.Close()
})
$window.ShowDialog() | Out-Null

Officeのリボン・カスタマイズに慣れていると、XAMLは結構身近に感じます。
上記参考サイトを見ながら何となくコードが書けました。
スクリプト実行時にPowerShellのコンソールが出てくるのが気になりますが、目的は達したのでまあ良しとします。





















この記事へのコメントはありません。