0

如果我运行这个命令:

C:\WINDOWS\explorer.exe "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D}"

从 Windows shell(通过Windows+ R),我的打印机和传真在 explorer.exe进程中打开。(所以我有 2 个正在运行的explorer.exe进程。)

如果我执行:

Process.Start(@"C:\WINDOWS\explorer.exe", @"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\" + 
                                          @"::{21EC2020-3AEA-1069-A2DD-08002B30309D}\" + 
                                          @"::{2227A280-3AEA-1069-A2DE-08002B30309D}");

从 C# 程序中,我的打印机和传真也打开了,但作为主进程的子进程explorer.exe(运行 Windows shell 的进程,包括任务栏等)。

如何explorer.exe从 C# 使用打印机和传真窗口启动第二个进程?

4

1 回答 1

0

初步想法 - 在文件夹选项(组织 -> 文件夹和搜索选项 -> 查看选项卡)中检查您的“在单独的进程中启动文件夹窗口”。默认情况下未选中此项,因此“检查”并再次尝试您的 C# 代码。

我知道这个设置会影响 ShellExecute 函数,但我不确定 .NET 的诊断命名空间是否使用相同的路由。

ShellExecute(句柄, "探索", , NULL, NULL, SW_SHOWNORMAL);


第二个想法 - stackoverflow 中已经讨论了一个类似的问题,这篇文章可能会给你一些想法。

启动新进程,而不是生成进程的子进程

于 2012-02-17T16:10:24.577 回答