検索したファイルを選んで右クリック → 「開く」「コピー」「フォルダーを開く」など、よく使う操作をすぐ実行できたら便利ですよね?
PowerShellのGUIアプリに**コンテキストメニュー(右クリックメニュー)**を追加して、さらに業務効率を高めましょう!
実装する右クリックメニュー内容
メニュー | 内容 |
---|---|
開く | 既定アプリでファイルを開く |
フォルダーを開く | ファイルの保存フォルダーをエクスプローラーで開く |
コピー | 選択ファイルを任意のフォルダーにコピー |
削除 | 選択ファイルを確認後に削除 |
コンテキストメニューのコード例(ListBoxに追加)
# コンテキストメニューの作成
$contextMenu = New-Object System.Windows.Forms.ContextMenu
# メニュー項目追加
$openItem = New-Object System.Windows.Forms.MenuItem "開く"
$folderItem = New-Object System.Windows.Forms.MenuItem "フォルダーを開く"
$copyItem = New-Object System.Windows.Forms.MenuItem "コピー"
$deleteItem = New-Object System.Windows.Forms.MenuItem "削除"
$contextMenu.MenuItems.AddRange(@($openItem, $folderItem, $copyItem, $deleteItem))
$listBox.ContextMenu = $contextMenu
各メニューの処理(クリックイベント)
# 開く
$openItem.add_Click({
if (Test-Path $listBox.SelectedItem) {
Start-Process $listBox.SelectedItem
}
})
# フォルダーを開く
$folderItem.add_Click({
$path = Split-Path $listBox.SelectedItem
if (Test-Path $path) {
Start-Process "explorer.exe" -ArgumentList $path
}
})
# コピー
$copyItem.add_Click({
$src = $listBox.SelectedItem
$folderDlg = New-Object System.Windows.Forms.FolderBrowserDialog
if ($folderDlg.ShowDialog() -eq "OK") {
$dest = Join-Path $folderDlg.SelectedPath (Split-Path $src -Leaf)
Copy-Item $src -Destination $dest -Force
[System.Windows.Forms.MessageBox]::Show("コピーしました:`n$dest")
}
})
# 削除(確認あり)
$deleteItem.add_Click({
$file = $listBox.SelectedItem
$result = [System.Windows.Forms.MessageBox]::Show("削除しますか?`n$file", "確認", "YesNo")
if ($result -eq "Yes") {
Remove-Item $file -Force
$listBox.Items.Remove($file)
[System.Windows.Forms.MessageBox]::Show("削除しました")
}
})
実行結果
- 検索結果からファイルを選んで右クリックするだけ!
- フォルダーをすぐ開いてドラッグ&ドロップも可能
- ファイル整理やレビュー時に超便利!
まとめ
PowerShellのGUIに右クリック操作を加えると、まるでファイルマネージャのような使い心地に進化します。
自分仕様のツールに育てていけば、日常業務がもっとスマートになります!
次回予告
次回は、検索結果の一覧を**CSV形式でエクスポート(保存)**して、あとから一覧で確認・共有できる機能を追加してみましょう!
コメント