在我的应用程序中,我可以使用以下代码以编程方式打开资源管理器并选择文件:
我的问题是,如果我用不同的文件但在同一个文件夹中再次调用此函数,资源管理器中的选择不会更改为新文件,而是仍然停留在以前的文件上。
例如,如果我使用
是否有一种方法可以强制资源管理器更新选择或更好地完成这项任务?
编辑:
以上行为发生在 Windows XP 上。似乎 Vista / Win7 上的行为不同。每次调用都会打开一个新的资源管理器实例并选择文件。
我的主要目标是复制 Visual Studio 中 “打开包含文件夹” 选项的功能。Visual Studio 中的此功能在 XP、Vista 和 Win7 上的行为相同。如果已经打开了具有相同文件夹的另一个实例,则它不会创建新实例,但它将更新选择到新文件。
如果有人知道 Visual Studio 是如何实现这一点的,我很想知道。
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 是如何实现这一点的,我很想知道。