问题描述
是否可以使用COM对象与现有的“另存为”和“打开”窗口进行交互?
Shell.Application
仅列出现有的“文件资源管理器”窗口,而不列出在其他应用程序(如Notepad ++)中打开的现有“打开”和“另存为”窗口,您可以通过运行以下命令来看到这些窗口:
$Shell = New-Object -ComObject Shell.Application
ForEach ($Item in $Shell.windows()) {
Write-Host $Item.LocationName
}
我想在AutoHotkey中使用它,而这个问题不在https://autohotkey.com/board/topic/102127-navigating-explorer-directories/#entry634365的后面
解决方法
您可以尝试使用net类:
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.SaveFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = "All files (*.*)| *.*"
$OpenFileDialog.ShowDialog() | Out-Null
$OpenFileDialog.filename
,
您可以使用BrowseForFolder()
,可以使用多种选项。这是几个例子。
$shell = New-Object -ComObject Shell.Application
$shell.browseforfolder(0,"Pick a folder",20)
$shell.browseforfolder(0,"Your custom message",20,17)
您甚至可以使其显示文件
$shell.browseforfolder(0,16384,17)
尽管它仅用于选择文件夹,所以要选择名称。它也可以是一个衬垫。以下默认设置为控制面板
(New-Object -ComObject Shell.Application).browseforfolder(0,"Do something",16,3)
我不确定您打算直接从资源管理器中保存什么。看来这将是实际应用程序的功能,例如您提到的记事本++
以下是一些有用的链接
http://www.lee-mac.com/directorydialog.html
您可能还想看看ShellExecute