如果我运行此命令:
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的进程,包括任务栏等)。
如何使用C#中的打印机和传真窗口启动第二个explorer.exe
进程?
答案 0 :(得分:0)
初步想法 - 在文件夹选项中检查“在单独的过程中启动文件夹窗口”(组织 - >文件夹和搜索选项 - >视图选项卡)。默认情况下,这是未选中的,因此“检查”此项并再次尝试您的C#代码。
我知道这个设置会影响ShellExecute函数,但我不确定.NET的Diagnostic命名空间是否使用相同的路由。
ShellExecute(handle,“explore”,NULL,NULL,SW_SHOWNORMAL);
第二个想法 - 在stackoverflow中已经讨论过类似的问题,这篇文章可能会给你一些想法。
Start new process, without being a child of the spawning process