Hello, Windows Forms(PowerShell) World!

Posted on 6月 7th, 2012 by cx20

Windows Forms(PowerShell)

Windows フォーム(Windows Forms)は .NET Framework におけるユーザーインターフェイス基盤である。Windows アプリケーションにおけるウィンドウやダイアログに対応する。
以下は PowerShell における Windows フォーム の例となっている。

ソースコード(PowerShell のみ)

[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$form = New-Object Windows.Forms.Form
$form.Size = New-Object Drawing.Size 640,480
$form.Text = "Hello, World!"
$label1 = New-Object Windows.Forms.Label
$label1.Size = New-Object Drawing.Size 320, 20
$label1.Text = "Hello, Windows Forms(PowerShell) World!"
$form.Controls.Add( $label1 )
$form.ShowDialog()

なお、PowerShell 2.0 から Add-Type コマンドレットを用いることにより C# や VB.NET のコードも呼び出せるようになっている。

ソースコード(PowerShell + C#)

$source = @"
using System;
using System.Drawing;
using System.Windows.Forms;
 
public class HelloForm : Form
{
    public HelloForm()
    {
        this.Size = new Size( 640, 480 );
        this.Text = "Hello, World!";
 
        Label label1 = new Label();
        label1.Size = new Size( 320, 20 );
        label1.Text = "Hello, Windows Forms(PowerShell) World!";
 
        this.Controls.Add( label1 );
    }
    [STAThread]
    public static void Main()
    {
        HelloForm form = new HelloForm();
        Application.Run(form);
    }
}
"@
Add-Type -Language CSharp -TypeDefinition $source -ReferencedAssemblies ("System.Drawing", "System.Windows.Forms" )
[HelloForm]::Main()

ソースコード(PowerShell + VB.NET)

$source = @"
Imports System
Imports System.Drawing
Imports System.Windows.Forms
 
Public Class HelloForm
    Inherits Form
 
    Public Sub New()
        Me.Size = New Size( 640, 480 )
        Me.Text = "Hello, World!"
 
        Dim label1 As New Label
        label1.Size = New Size( 320, 20 )
        label1.Text = "Hello, Windows Forms(PowerShell) World!"
 
        Me.Controls.Add( label1 )
    End Sub
 
    <STAThread> _
    Shared Sub Main()
        Dim form As New HelloForm()
        Application.Run(form)
    End Sub
End Class
"@
Add-Type -Language VisualBasic -TypeDefinition $source -ReferencedAssemblies ("System.Drawing", "System.Windows.Forms" )
[HelloForm]::Main()

実行方法

C:¥> PowerShell -File Hello.ps1

実行結果

+------------------------------------------+
|Hello, World!                    [_][~][X]|
+------------------------------------------+
|Hello, Windows Forms(PowerShell) World!   |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
+------------------------------------------+

Tags:

Categories: .NET, library, PowerShell, Windows Forms

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

WP-SpamFree by Pole Position Marketing