2006/12/08
簡易ファイラ~イベントハンドラII
前のブログを閉鎖するので、これから元記事を一気にコピーします。
元記事はこちらです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
プライバシーポリシー