После долгих исследований я наткнулся на приведенный ниже код, чтобы подвести итог, что он делает.
это позволит вам перетаскивать файлы из Outlook, затем он скопирует и вставит их в папку, которая затем даст вам путь и имя файла. это довольно круто, так что если кто-то еще застрял здесь, это мой рабочий скрипт и как я реализовал его в своей форме
######################################## This is For Drag And Drop
$Listbox1.AllowDrop = $true
$Listbox1.Add_DragDrop({
if ($_.Data.GetDataPresent([Windows.Forms.DataFormats]::FileDrop)) {
foreach ($FileName in $_.Data.GetData([Windows.Forms.DataFormats]::FileDrop)) {
Copy-Item -Path $FileName -Destination $textbox6.text -Force
$Listbox1.Items.Add($FileName)
}
}
else
{
$Outlook = New-Object -ComObject Outlook.Application;
$Selection = $Outlook.ActiveExplorer().Selection
foreach ($Item in $Selection) {
foreach ($Attachment in $Item.Attachments) {
Write-Verbose $Attachment.FileName
$Name = Join-Path -Path $textbox6.text-ChildPath $Attachment.FileName
$Attachment.SaveAsFile($Name)
}
}
}
})
$Listbox1.Add_DragEnter({$_.Effect = [Windows.Forms.DragDropEffects]::Copy})
$Form12.Controls.Add($Listbox1)
# Activate the form
[void] $Form12.ShowDialog()
мне пришлось немного изменить свою форму, добавив Input Folder Button
& Textbox6
чтобы показать текст выбранной папки, это важно, так как приведенный выше сценарий нуждается в каталоге для сохранения файлов, см. код ниже.
###################################### Get Folder Using Folder Browser and output text into textbox
$button4_Click = {
$folderBrowserDialog3=New-Object System.Windows.Forms.FolderBrowserDialog
[void]$folderBrowserDialog3.ShowDialog()
$folderBrowserDialog3.SelectedPath
$textBox6.Text = $folderBrowserDialog3.SelectedPath
}
$button6_Click = {
$folderBrowserDialog1=New-Object System.Windows.Forms.FolderBrowserDialog
[void]$folderBrowserDialog1.ShowDialog()
$folderBrowserDialog1.SelectedPath
$textBox2.Text = $folderBrowserDialog1.SelectedPath
}
$button7_Click = {
$folderBrowserDialog2=New-Object System.Windows.Forms.FolderBrowserDialog
[void]$folderBrowserDialog2.ShowDialog()
$folderBrowserDialog2.SelectedPath
$textBox3.Text = $folderBrowserDialog2.SelectedPath
}
после того, как я понял, что это работает, Меня больше всего беспокоило то, что я не мог видеть файлы в listbox
, поэтому я добавил button
, чтобы сделать именно это, см. код ниже
###################################### Shows Files In ListBox 1
$button5_Click = {
#$textbox8.Text = ""
$listBox1.Items.Clear()
$items = Get-ChildItem $textbox6.Text
ForEach($item in $items){
$listBox1.Items.Add($item.FullName)
}
}
, как вы можете видеть, я добавил $listbox1.Items.Clear()
это позволит вам продолжать нажимать кнопку «Показать файлы», не дублируя путь и файл в listbox
, итоговый результат моего Form
получился великолепным, см. мой макет изображения ниже, если Кому-нибудь нужна помощь, чтобы он работал самостоятельно Form
, пожалуйста, прокомментируйте, и я сделаю все возможное, чтобы помочь.