当我从打开 Windows 资源管理器窗口时之内应用程序(例如另存为、打开等)打开时保存到上次特定句柄用过的。我希望它打开到最后一个位置任意句柄用过的。
请注意,这与将每个对话框打开到通用默认位置不同。
例如,当我在 Adobe Photoshop、Premiere 和 After Effects 之间切换时,我必须在每个应用程序中选择要导入和导出的文件,并且每个组合都会打开 Explorer 到特定功能使用的最后一个位置。这意味着有NumApplications
×NumDialogs
打开到我使用的上一个目录谁知道什么时候,然后我必须手动导航到新的项目目录。
如何使 Windows 资源管理器变得愚蠢,以便不保留每个句柄的特定路径?
目前,我的解决方法是打开一个资源管理器窗口,指向我的项目目录的根目录,然后我不断从地址栏 ( Alt+D
, Ctrl+C
) 获取路径,每当打开另一个句柄时,我都会粘贴该路径。但这仍然会在许多地方给我的工作流程带来额外的上下文切换。
答案1
我想打开所有文件选择对话框到最后使用的位置(不是特定于应用程序的)
这是不可能的,因为应用程序负责在自己的对话框中设置任何默认目录位置。
这是通过使用常见项目对话框API,该API在Windows Vista中实现,并在所有后续的Windows版本中使用。
常用项目对话框由打开对话框和保存对话框使用(它们共享大部分功能)。
API 使用设置默认文件夹在创建特定于特定应用程序的“打开”或“另存为”对话框时设置默认文件夹位置):
默认文件夹是用户首次从您的应用程序打开对话框时启动的文件夹。此后,对话框将在用户打开的最后一个文件夹或他们用于保存项目的最后一个文件夹中打开。有关更多详细信息,请参阅状态持久性。
您可以通过调用 强制对话框在打开时始终显示相同的文件夹,而不管用户之前的操作
IFileDialog::SetFolder
。但是,我们不建议这样做。如果您SetFolder
在显示对话框之前调用 ,则不会显示用户保存或打开的最近位置。除非有非常具体的原因导致此行为,否则这不是良好或预期的用户体验,应避免使用。在几乎所有情况下,IFileDialog::SetDefaultFolder
都是更好的方法。首次在“保存”对话框中保存文档时,应遵循与“打开”对话框中相同的准则来确定初始文件夹。如果用户正在编辑先前存在的文档,请在存储该文档的文件夹中打开对话框,并用该文档的名称填充编辑框。
IFileSaveDialog::SetSaveAsItem
在调用之前,使用当前项目 调用Show
。
因此,每个应用程序都有责任决定如何在打开这些对话框时处理默认目录设置。