2012-02-17 89 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