我有一个应用程序,将一系列文本文件写入用户计算机上的文件夹。 然后提示他们是否想打开文件夹查看所有文件。 我使用System.Diagnostics.Process.Start()来做到这一点,它运作良好。 但是,如果已经打开了该文件夹的窗口,我只想重复使用该窗口而不是打开另一个窗口。 帮助保持整洁。
有任何想法吗?
更新 :我试过这个:
if (MessageBox.Show("Compiled! Open folder?", "Compile Done", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) { ProcessStartInfo Info = new ProcessStartInfo("explorer", Path); Info.UseShellExecute = false; Process.Start(Info); }
但它仍然打开一个新的窗口。 我也尝试设置UseShellExecute为true,我得到了一个新的窗口打开相同的结果。
刚刚在Windows XP上试过这个:
System.Diagnostics.Process.Start(@"C:\Dev"); System.Threading.Thread.Sleep(10000); System.Diagnostics.Process.Start(@"C:\Dev");
它打开我的C:\ Dev文件夹。 然后我把重点放在其他地方 10秒后,C:\ Dev窗口闪烁并再次突出显示。 那么你在做什么不同的地方不工作?
(试图找出是否有一个打开的窗口显示一个特定的文件夹是充满和容易出错的,我不会推荐它)
如果您使用ShellExecute()
打开文件夹,那么Explorer将为您完成工作,如果存在,则重新使用打开的资源管理器窗口。
调用ShellExecute()
的.net方法是设置传递给Process.Start()
的ProcessStartInfo
对象的UseShellExecute
属性。
更新
现在发布你的代码,我可以看到这个问题。 您应该让系统打开文件夹,而不是尝试启动一个新的explorer.exe进程,如下所示:
ProcessStartInfo Info = new ProcessStartInfo(Path); Process.Start(Info);