2013-07-09 33 views
3

是否有可能打開Internet屬性窗口..
代碼:打開Internet屬性,等待用戶關閉C#

System.Diagnostics.Process p; 
p = System.Diagnostics.Process.Start("InetCpl.Cpl", ",4"); 

.. 和等待,直到用戶將其關閉?(然後檢查網絡連接並繼續)

此代碼不能工作:

p.WaitForExit(); 

我覺得這個問題是關係到Open explorer window and wait for it to close但對於這個解決方案包含特定的Windows Explorer瀏覽器窗口只提示。

我可以在C#中做到這一點嗎?

解決方案
有人把這裏(只是爲了短短的片刻)這個完整的命令如何打開Internet屬性窗口:

C:\Windows\system32\rundll32.exe C:\Windows\system32\shell32.dll,Control_RunDLL C:\Windows\system32\inetcpl.cpl,,4 

我試了一下..真的.. 它的作品!

System.Diagnostics.Process p; 
p = System.Diagnostics.Process.Start("rundll32.exe", 
    @"C:\Windows\system32\shell32.dll,Control_RunDLL" 
    + " C:\Windows\system32\inetcpl.cpl,,4"); 
p.WaitForExit(); 
MessageBox.Show("Properties closed"); 

只有在關閉屬性窗口後,才能看到「屬性關閉」消息。
不需要PID ..簡單而完美的優雅解決方案。
如果使用此命令寫入原始響應的用戶再次寫入,我接受他的解決方案。

+0

你最終調用的過程實際上可能產卵另一個進程做的工作。獲取Process對象的PID,並將其與環境中運行的對象進行比較。例如任務管理器顯示PID列。 –

+0

謝謝保羅。有人把這個解決方案放在這裏。但使用PID可能會起作用。不幸的是,使用PID很難理解和執行。 – Atiris

+0

解決方案是由提供:http://stackoverflow.com/users/1522976/pravin我認爲答案發布看起來更像是一個評論...需要更多的工作和解釋。 –

回答

2

使用下面的代碼在單獨的進程中打開控制面板:

System.Diagnostics.Process.Start(@"C:\Windows\system32\rundll32.exe" 
    , @"C:\Windows\system32\shell32.dll,Control_RunDLL" 
    + " C:\Windows\system32\inetcpl.cpl,,4"); 

,然後你可以WaitForExit();

+0

這應該是對OP的評論或編輯。請刪除它。謝謝。 –

+1

感謝您的解決方案,但有一個錯誤..你必須轉義反斜槓(使用雙反斜槓\\)或禁用整個字符串的轉義字符(\)@(在這部分代碼中:「C:\ Windows \ system32 \ RUNDLL32.EXE「)。我編輯你的代碼來工作。 – Atiris