このブログでも何度か取り上げているWindows Formですが、きちんと説明したことがなかったので、何回かに分けて説明したいと思います。
PowerShellは.NET Frameworkを基盤としているので、Windowsフォームを扱うことが可能です。
通常、.NET Frameworkを利用したWindows FormアプリケーションはVB.NETやC#を使用して作成し、コンパイルして実行というのがスタンダードな方法かと思います。
PowerShellでのWindows Formアプリケーションはコンパイルする必要がありません。(IronPythonなどもそうですね) しかし、デザイナがないのでサイズの決定やコントロールの配置、イベント追加などは慣れないと大変です。
しかし、PowerShellで「一部はGUIを取り入れたい」なんて時には威力を発揮しますので、覚えておいて損はないかと思います。
前置きが長くなりましたが、今回はフォームを表示する方法について説明します。
1)フォームを使う準備をする
フォームを使用するにはSystem.Windows.Formsが必要です。これはVB.NETやC#でいうところの参照設定に該当します。
PowerShellを起動した時点ではSystem.Windows.Formsは使用できないので最初に登録する必要があります。
下記一文で登録することが可能です。
[void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
ちなみに、現在使用可能なアセンブリを確認するには
PS > ([AppDomain]::CurrentDomain).GetAssemblies() GAC Version Location --- ------- -------- True v2.0.50727 C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll True v2.0.50727 C:\Windows\assembly\GAC_MSIL\Microsoft.PowerShell.ConsoleHost\1.0.0.0__31bf3856ad364e35\Micros... True v2.0.50727 C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll True v2.0.50727 C:\Windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Man... True v2.0.50727 C:\Windows\assembly\GAC_MSIL\System.Configuration.Install\2.0.0.0__b03f5f7f11d50a3a\System.Con... True v2.0.50727 C:\Windows\assembly\GAC_MSIL\Microsoft.PowerShell.Commands.Management\1.0.0.0__31bf3856ad364e3... True v2.0.50727 C:\Windows\assembly\GAC_MSIL\Microsoft.PowerShell.Security\1.0.0.0__31bf3856ad364e35\Microsoft... True v2.0.50727 C:\Windows\assembly\GAC_MSIL\Microsoft.PowerShell.Commands.Utility\1.0.0.0__31bf3856ad364e35\M... True v2.0 C:\Windows\assembly\GAC_MSIL\Microsoft.PowerShell.ConsoleHost.resources\1.0.0.0_ja_31bf3856ad3...
([AppDomain]::CurrentDomain).GetAssemblies() の一文は下記のようにしてプロファイルに登録しておくと、次回起動時よりGet-Assemblyで確認することができるようになります。
function Get-Assembly { ([AppDomain]::CurrentDomain).GetAssemblies()}
2)フォームをデザインする
Windowsフォームを使用するためには、最低でも
をする必要があります。
Formオブジェクトを作成するには
$form = New-Object System.Windows.Forms.Form
のようにします。そして作成したFormオブジェクト($form)に幅と高さを指定します。
下記は幅500と高さ500に設定しています
$form.Width = 500 $form.Height = 500
できれば下記のようにして、タイトルバーに表示するテキストも設定してしまいましょう。
$form.Text = "PowerShellからのForm表示"
3)フォームを表示する
デザインが完了した後は、実際にフォームを表示します。
フォームの表示は ShowDialogメソッドを使用します。
$form.Width = 500 $form.ShowDialog()
ここまでをまとめると下記のようになります。
[void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms") $form = New-Object System.Windows.Forms.Form $form.Width = 500 $form.Height = 500 $form.Text = "PowerShellからのForm表示" $form.ShowDialog()
実行結果は下記のようになります。
Theme design by Jelle Druyts
Pick a theme: BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2 BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2
Powered by: newtelligence dasBlog 2.0.7226.0
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2009, HIRO
E-mail