2009-02-02 9 views
3

Comment ouvrir un panneau de contrôle personnalisé par programme, comme custom.cpl? Plus précisément, comment puis-je ouvrir une cpl 64 bits lors de l'exécution en tant qu'application 32 bits?Comment ouvrir un panneau de contrôle par programmation?

+0

pourquoi wiki communautaire? –

+1

J'ai décidé pour le wiki de la communauté car j'ai répondu à la question moi-même, mais uniquement pour le panneau de contrôle 32 bits. – vividos

Répondre

5

Vista a ajouté le support pour les noms canoniques afin que vous ne devez pas les noms de fichiers dll de code dur et onglet indexs

Exemple: WinExec ("% systemroot% \ system32 \ control.exe/nom Microsoft.WindowsUpdate", SW_NORMAL);

(Les noms sont toujours en anglais)

Voir MSDN pour une liste

XP/2000 prend en charge « souris control.exe » et quelques autres mots clés, consultez la même page MSDN pour une liste (vous peut sans doute trouver d'autres de non documentées par des chaînes en cours d'exécution sur control.exe)

5

Depuis que je n'ai pas trouvé une bonne réponse ici sur le SO, voici la solution de mes recherches:

  • Démarrer une nouvelle application « contrôle » qui obtient le nom du panneau de commande comme premier paramètre:
::ShellExecute(m_hWnd, NULL, _T("control.exe"), _T("access.cpl"), NULL, SW_SHOW); 
1

Etape 1: système de lire le répertoire de la machine. Etape 2: Utiliser processus pour commencer ControlPanel

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

Comme je l'ai mentionné précédemment dans une autre question:

Si vous tapez « Contrôle de démarrage » ou « Control » dans Invite de commandes, il ouvrira le Panneau de configuration.

Par conséquent, il suffit de lancer un processus.

Ce code (Bellow) a parfaitement fonctionné pour moi:

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

utiliser simplement ....

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