Question

Comment ouvrir un panneau de commande personnalisé par programme, tel que custom.cpl? Comment puis-je ouvrir un cpl 64 bits en tant qu’application 32 bits?

Était-ce utile?

La solution

Vista a ajouté la prise en charge des noms canoniques afin que vous n'ayez pas à coder en dur les noms de fichiers dll et les index de tabulation

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

(les noms sont toujours en anglais)

Voir MSDN pour obtenir une liste

XP / 2000 prend en charge " souris control.exe " et quelques autres mots-clés, voir la même page MSDN pour une liste (vous pouvez probablement en trouver quelques-uns en documentant en exécutant des chaînes sur control.exe)

Autres conseils

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

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

Étape 1:                         Lire le répertoire système de la machine.                 Étape 2 :                         Utilisez Process pour démarrer ControlPanel

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

utilisez simplement ceci ....

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

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

Si vous tapez " Démarrer Contrôle " ou " Control " dans l'invite de commande, il ouvrira le Panneau de configuration.

Il suffit donc de lancer un processus.

Ce code (ci-dessous) 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); }
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top