プログラミング

【Powershell】ドラッグ&ドロップの実装

powershellでファイルパスを指定して実行する方法は分かりました。

もっと使いやすくできないかな?と思っているとなんとpowershellにもUIがあるというじゃないですか!!

そこでファイルをドラッグ&ドロップで指定できるようにやってみました!

PowershellのUIでドラッグ&ドロップを実装

Poweshellには多彩なUIが実装されているんですね。
今回はその中でも「ドラッグ&ドロップできるエリア」を使用してみたいと思います。

下記サイトを参考にさせていただきました!と言ってもまるまるコピペです笑
letspowershell.blogspot.jp

Add-Type -AssemblyName System.Windows.Forms

$form = New-Object System.Windows.Forms.Form
#formのサイズ
$form.Size = "500,300"
$form.StartPosition = "CenterScreen"
$form.Text = "タイトル"

#リストボックスの生成
$Listbox =  New-Object System.Windows.Forms.ListBox
$Listbox.Location = "10,10"

#リストボックスのサイズ
$Listbox.Size = "470,200"

#ドラッグ&ドロップを許可
$Listbox.AllowDrop = $True

# ドラッグエンター イベント
$Enter = {
  $_.Effect = "ALL"
   #write-host "このタイミングです!!"
}

#addしないとドラッグできない
$Listbox.Add_DragEnter($Enter)

#ドラッグドロップ イベント
$Drop = {
    $Name = @($_.Data.GetData("FileDrop"))
     #1つずつ取得し、リストボックスに追加
    For ( $i = 0 ; $i -lt $Name.Count ; $i++ )
    {
        $Listbox.Items.Add($Name[$i])
    }
}
#addしないとドロップできない
$Listbox.Add_DragDrop($Drop)

#開始ボタン
$Button = New-Object System.Windows.Forms.Button
$Button.Location = "200,220"
$Button.size = "80,30"
$Button.text  = "開始"
$Button.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.Controls.AddRange(@($Listbox,$Button))
$Form.Showdialog()

これで、ドラッグエリアが表示されるので、ドロップしたファイルのパスを取得することができます。
この実装によりファイルパスの取得が楽になりました。

取得したファイルパスを利用する

ドロップしたファイルパスは$Listboxに格納されていきます。

なのでこれを使用してファイルをオープンなど使用しています。

#ドロップしたExcelファイル1を開く
$path = $Listbox.Items[0]
$excelFile1 = $excel.Workbooks.Open($path)

 #ドロップしたExcelファイル2を開く
$path2 = $Listbox.Items[1]
$excelFile1= $excel.Workbooks.Open($path2)

UIを実装したときはPowershell ISEから実行してください。
powershellコンソールや右クリックの「powershellで実行」をするとエラーになります。

原因は実行時のシングルスレッド(STA)とマルチスレッド(MTA)の違いなんですが、それはまた次回ということで~。

解決編はこちら⇒【Powershell】シングルスレッドとマルチスレッド対応による実行時のエラーについて

まとめ

powershellのUIを使用するとファイルのパスをドラッグ&ドロップで取得することができる。

ただしこのままだとPowershell ISEから実行しないとエラーになるので注意です。

RECOMMEND

1

新卒で入社したけど『もう仕事を辞めたい』『我慢できない』という方に向けて。新卒入社でカフェのフロアスタッフとしてして働いたけれど、約1年で退職した私からアドバイスです。心がだめになるまで続ける必要なんてありません。

2

女性はライフステージによって休職や転職しなければいけないときがありますよね。
そこでこの記事では女性の転職に有利な資格をまとめてみました。
一生職に困らない、転職に有利な資格とはなにかご覧ください。

3

「今日は会社に行く気がしない・・。」「たまには会社をさぼりたい・・。」なんてことありませんか?本記事では、実際に私の周りで使われていた欠勤理由をご紹介します。今から使える欠勤理由です。本当に仕事に行きたくないときなど活用できると思うので、ぜひ読んでみてください。

-プログラミング

Copyright© Job search info , 2020 All Rights Reserved.