2012-02-17 86 views
0

新explorer.exe进程:开始从C#

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

从Windows外壳程序(通过的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进程?

+3

那么,对于一件事,你有几个转义''\\在你的第二个字符串。 – 2012-02-17 15:59:26

+0

ohu,你的权利..但那只是因为我在飞行中写了这个,在我的真实代码中它逃脱了。 – cyptus 2012-02-17 16:07:25

回答

0

最初的想法 - 检查你的“打开文件夹窗口在一个单独的进程”文件夹选项(组织 - >文件夹&搜索选项 - >查看选项卡)。这在默认情况下是未选中的,因此“检查”这个并再次尝试你的C#代码。

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

ShellExecute(handle,“explore”,NULL,NULL,SW_SHOWNORMAL);


第二个想法 - 类似的问题已经被在计算器讨论和这个职位可能会给你一些想法。

Start new process, without being a child of the spawning process

+0

就像FYI一样,'Process.Start'在默认情况下使用'ShellExecute',但如果您使用其中一个采用'ProcessStartInfo'的重载,则可以使用'CreateProcess'。 – Sven 2012-02-17 16:14:00

+0

这是真的。默认情况下,ProcessStartInfo.UseShellExecute设置为true。 – Kash 2012-02-17 16:18:23