Tuesday, June 10, 2008

このブログでも何度か取り上げている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幅の設定
  • Form高さの設定

をする必要があります。 

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()

実行結果は下記のようになります。

Tuesday, June 10, 2008 10:49:34 PM (Tokyo Standard Time, UTC+09:00)  #    Comments [0]  |  Trackback
Comments are closed.

Theme design by Jelle Druyts

Pick a theme: