什么是API调用以显示选择了指定文件的资源管理器窗口?当您单击.lnk快捷方式的"属性"对话框中的"查找目标..."按钮时,会发生什么情况?我知道有功能(或接口方法),但我忘了名字,再也找不到了.
请注意,我知道explorer /select,<pathname>命令行,并且不想使用它而不是API调用.
我可以轻松地打开资源管理器并使用以下选项来选择文件:
string argument = @"/select, " + filePath;
System.Diagnostics.Process.Start("explorer.exe", argument);
Run Code Online (Sandbox Code Playgroud)
但是,当我打开下一个文件时,我将获得一个新的explorer实例.这可能导致我们的用户在密集的一天结束时开放数百名探险家.
如何让它重用已经打开的资源管理器实例来选择我想要的文件?
当您右键单击选项卡并选择打开包含文件夹时,Visual Studio可以执行此操作...提供资源管理器已在同一目录中打开.它是如何做到这一点的?
我有一个经常使用启动explorer.exe的应用程序。我想重新使用现有的/已经打开的资源管理器窗口,而不是每次启动该过程时都创建一个新的资源管理器窗口。
这是我的代码:
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo
{
UseShellExecute = true,
FileName = "Explorer.exe",
Arguments = myDirectoryPath
};
System.Diagnostics.Process.Start(info);
Run Code Online (Sandbox Code Playgroud)
我没有看到执行此操作的命令行开关。我尝试的一种方法是简单地杀死任何一个现有的资源管理器进程,并将其替换为新的进程:
var processes = System.Diagnostics.Process.GetProcesses(Environment.MachineName);int kills = 0;
for (int i = 0; i < processes.Length; i++)
{
System.Diagnostics.Process p = processes[i];
if (p.ProcessName == "explorer" && kills < 1)
++kills
p.Kill();
}
Run Code Online (Sandbox Code Playgroud)
但是,这不仅导致杀死1个进程,而且导致彻底杀死资源管理器,甚至任务栏也消失,产生了不良后果。
那么,如何使用现有的Explorer窗口(如果存在)来启动Explorer?