2009-02-02 5 views
3

Как открыть пользовательскую панель управления программно, например custom.cpl? В частности, как я могу открыть 64-битный cpl при работе как 32-битное приложение?Как программно открыть панель управления?

+0

почему сообщества вики? –

+1

Я решил для вики сообщества, поскольку я в основном отвечал на вопрос сам, но только для 32-битной панели управления. – vividos

ответ

5

Vista, добавлена ​​поддержка канонических имен, поэтому вам не придется жесткими имена файлов DLL кода и вкладка индексирует

Пример: WinExec ("% systemroot% \ system32 \ control.exe/name Microsoft.WindowsUpdate", SW_NORMAL);

(имена всегда на английском языке)

См MSDN для списка

XP/2000 поддерживает «control.exe мышь» и несколько других ключевых слов, см той же странице MSDN для списка (You возможно, найдут некоторые недокументированные, запустив строки на control.exe)

5

Поскольку я не нашел хороший ответ здесь на SO, вот решение моего исследования:

  • Запустите новое приложение «контроль», который получает название панели управления в качестве первого параметра:
::ShellExecute(m_hWnd, NULL, _T("control.exe"), _T("access.cpl"), NULL, SW_SHOW); 
1

Шаг1: Прочитайте системный каталог с машины. Шаг2: Использование Процесс запуска ControlPanel

  **Process.Start(System.Environment.SystemDirectory + @"\appwiz.cpl");** 
0

Как я уже упоминал в другом вопросе:

Если вы наберете "Start Control" или "Control" в Command Prompt будет открыть панель управления.

Поэтому просто запустите процесс.

Этот код (пыльник) работал отлично для меня:

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); } 
    } 
0

просто использовать это ....

ProcessStartInfo startInfo = new ProcessStartInfo("appwiz.cpl"); 
startInfo.UseShellExecute = true; 
Process.Start(startInfo); 

 Смежные вопросы

  • Нет связанных вопросов^_^