2006/12/08

前のブログを閉鎖するので、これから元記事を一気にコピーします。

元記事はこちらですhttp://winscript.s41.xrea.com/mt/archives/2005/09/post_4.html

.NET FrameworkのSystem.Windows.Formsに含まれるコントロールを利用して、簡易ファイラをつくってみました。テキストボックスにパスを入れて「移動」ボタンを押すとそのフォルダの中身をリストボックスに表示します。リストボックスのファイルをダブルクリックすると実行、フォルダをダブルクリックすると移動します。イベントハンドラの使い方に注目してください。

function InvokeItem {
    Param($path)
    
    # 現在のパス+選択したファイル/フォルダ名を組み立てる
    $path2 = $(get-location).ToString() +"\" + $path
    
    if ([System.IO.Directory]::Exists($path2) ){
    # フォルダなら移動
        ChDirectory($path2)
    }else{
    #ファイルなら実行
        invoke-item $path
    }
}
 
function ChDirectory {
    Param($path)
    
    set-location $path #ディレクトリ移動
    $listBox1.Items.Clear() #リストボックスを空にする
    
    # get-childitem Cmdletの戻り値をパイプラインに渡し、
    # foreachしてリストボックスに追加する
    get-childitem | foreach{$r = $listBox1.Items.Add($_)}
}
 
 
[void] [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
[void] [System.Windows.Forms.Application]::EnableVisualStyles()
$form = new-object System.Windows.Forms.Form
$form.Size = new-object System.Drawing.Size(300, 400)
 
$textbox1 = new-object System.Windows.Forms.TextBox
$textbox1.Size = new-object System.Drawing.Size(250, 20)
$textbox1.Location = new-object System.Drawing.Point(0, 0)
$textbox1.Text = get-location
 
$button1 = new-object System.Windows.Forms.Button
$button1.Size = new-object System.Drawing.Size(40, 20)
$button1.Location = new-object System.Drawing.Point(250, 0)
$button1.Text = "移動"
# ButtonのClickイベント
$button1.Add_Click({ChDirectory($textbox1.Text)})
 
$listbox1 = new-object System.Windows.Forms.ListBox
$listBox1.Size = new-object System.Drawing.Size(250, 300)
$listBox1.Location = new-object System.Drawing.Point(0, 50)
# ListBoxのDoubleClickイベント
$listBox1.Add_DoubleClick({InvokeItem($listBox1.SelectedItem)})
 
# 初期ディレクトリの設定
ChDirectory($textbox1.Text)
 
# コントロールをフォームに配置して表示
$form.Controls.Add($textbox1)
$form.Controls.Add($button1)
$form.Controls.Add($listBox1)
$form.showDialog()
元記事:http://blogs.wankuma.com/mutaguchi/archive/2006/12/09/49648.aspx

古い記事へ | 新しい記事へ


プライバシーポリシー

Twitter

Books