2013-05-30 14 views
1

我想鏈接到C#應用程序中的控制面板。我在Visual Studio中編寫代碼,並試圖找到一種方法在控制面板中建立這兩個區域的鏈接。鏈接到C#中的控制面板(運行廣告程序和配置管理器)

我一直在使用System.Diagnostics.Process.Start(),但我似乎無法找到一種方法來將我的方式實際連接到控制面板內的任何地方,除了少數幾個已經定義了小程序的地方如打印機和顏色。

請讓我知道如果你有任何想法如何來解決這個問題。

+0

你是什麼意思「鏈接到控制面板中的」你想從你的程序中顯示的控制面板或你想要一個新的控制面板窗口當你點擊你程序中的一個按鈕時會被打開嗎? –

回答

3

這個工作對我來說:

var cplPath = System.IO.Path.Combine(Environment.SystemDirectory, "control.exe"); 
System.Diagnostics.Process.Start(cplPath, "/name Microsoft.ProgramsAndFeatures"); 

您還可以指定控制panelitem的頁面。檢出Executing Control Panel ItemsCanonical Names of Control Panel Items

+0

但是,這起作用「從Windows Vista開始」,它在Windows XP中不起作用。 – AnAurelian

0

如果你只是想推出一個控制面板窗口中的命令是

System.Diagnostics.Process.Start("control"); 

如果要啓動在控制面板中的單個項目,你需要知道它的文件名(檢查Windows\System32Windows\SYSWOW64爲這些文件,他們在.cpl結束),然後你可以像這樣啓動它。

System.Diagnostics.Process.Start("control", "powercfg.cpl"); 
0

如果在命令提示符中鍵入「Start Control」或「Control」,它將打開控制面板。

因此,我會運行一個進程並運行它。 此代碼(波紋管)工作完美的我:

public Form1() 
{ 
    InitializeComponent(); 
} 

    #region Variables 
    Process p; 
    #endregion Variables 

    [...] 

    void myMethod() 
    { 
      try 
      { 
       p = new Process(); 
       p.StartInfo.FileName = "cmd.exe"; 
       p.StartInfo.RedirectStandardInput = true; 
       p.StartInfo.RedirectStandardOutput = true; 
       p.StartInfo.CreateNoWindow = true; 
       p.StartInfo.UseShellExecute = false; 
       p.Start(); 

       p.StandardInput.WriteLine("start control"); 
       p.StandardInput.Flush(); 
       p.StandardInput.Close(); 
       Console.WriteLine(p.StandardOutput.ReadToEnd()); 
      } 
      catch (Exception ex) { MessageBox.Show(ex.Message); } 
    } 
相關問題