COM对象与现有“另存为”交互并打开窗口

COM对象与现有“另存为”交互并打开窗口,com,autohotkey,Com,Autohotkey,是否可以使用COM对象与现有的“另存为”和“打开”窗口交互 Shell.Application仅列出现有的文件资源管理器窗口,而不是在其他应用程序(如Notepad++)中打开的现有“打开”和“另存为”窗口,您可以通过运行以下命令看到: $Shell = New-Object -ComObject Shell.Application ForEach ($Item in $Shell.windows()) { Write-Host $Item.LocationName } 我想在自动热键

是否可以使用COM对象与现有的“另存为”和“打开”窗口交互

Shell.Application
仅列出现有的文件资源管理器窗口,而不是在其他应用程序(如Notepad++)中打开的现有“打开”和“另存为”窗口,您可以通过运行以下命令看到:

$Shell = New-Object -ComObject Shell.Application
ForEach ($Item in $Shell.windows()) {
    Write-Host $Item.LocationName
}

我想在自动热键中使用这个问题,这个问题在

的后面,你可以试着像这样使用类网络:

[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
您可以使用,并且有几个选项可以应用于它。这里有几个例子

$shell = New-Object -ComObject Shell.Application
$shell.browseforfolder(0,"Pick a folder",20)

$shell.browseforfolder(0,"Your custom message",20,17)
你甚至可以让它显示文件

$shell.browseforfolder(0,"Your custom message",16384,17)
虽然它只用于选择文件夹,但因此得名。它也可以是一个班轮。以下默认设置为“控制面板”

(New-Object -ComObject Shell.Application).browseforfolder(0,"Do something",16,3)
我不确定您打算直接从explorer保存什么。这似乎是一个实际应用程序的功能,比如你提到的记事本++

这里有一些有用的链接


你可能还想看看

你打算在explorer中保存什么?@DougMaurer没有什么特别的,我只是想在某些用例中更改目标文件夹/目录。谢谢你,但也许我应该更清楚一些。我正在尝试与现有的“打开/另存为”窗口交互,而不是创建新窗口。