在我的应用程序中,我可以使用以下代码以编程方式打开资源管理器并选择一个文件:
void BrowseToFile(LPCTSTR filename)
{
CString strArgs;
strArgs = _T("/select,\"");
strArgs += filename;
strArgs += _T("\"");
ShellExecute(0, _T("open"), _T("explorer.exe"), strArgs, 0, SW_NORMAL);
}
我的问题是,如果我用不同的文件再次调用此函数,但在同一个文件夹中,资源管理器中的选择不会更改为新文件,而是保留在前一个文件上。
例如,如果我用 调用我的函数C:\path\to\file1.txt
,则会打开一个新的资源管理器窗口并被file1.txt
选中。如果我用 再次调用我的函数C:\path\to\file2.txt
,现有的资源管理器窗口将被激活,但选择仍将打开file1.txt
。
有没有办法强制资源管理器更新选择或更好的方法来完成这个?
编辑:
上面提到的行为是在 Windows XP 上。Vista / Win7 上的行为似乎有所不同。每次调用都会打开一个新的资源管理器实例并选择文件。
我的主要目标是将 Visual Studio 选项复制到打开文档的包含文件夹。Visual Studio 中的此功能在 XP、Vista 和 Win7 上的行为相同。如果已打开具有相同文件夹的另一个实例,它将不会创建新实例,但会将选择更新为新文件。
如果有人知道 Visual Studio 如何做到这一点,我很想知道。