5

カスタム コントロール パネル (custom.cpl など) をプログラムで開くにはどうすればよいですか? 具体的には、32 ビット アプリケーションとして実行しているときに 64 ビット cpl を開くにはどうすればよいですか?

4

5 に答える 5

5

Vistaでは、正規名のサポートが追加されたため、dllファイル名とタブインデックスをハードコーディングする必要はありません。

例:WinExec( "%systemroot%\ system32 \ control.exe / name Microsoft.WindowsUpdate"、SW_NORMAL);

(名前は常に英語です)

リストについてはMSDNを参照してください

XP / 2000は、「control.exeマウス」と他のいくつかのキーワードをサポートしています。リストについては、同じMSDNページを参照してください(control.exeで文字列を実行すると、文書化されていないものを見つけることができます)

于 2009-02-16T02:46:31.670 に答える
5

ここSOで良い答えが見つからなかったので、私の研究の解決策は次のとおりです。

  • 最初のパラメーターとしてコントロール パネルの名前を取得する新しいアプリケーション「コントロール」を開始します。
::ShellExecute(m_hWnd, NULL, _T("control.exe"), _T("access.cpl"), NULL, SW_SHOW);
于 2009-02-02T15:49:03.970 に答える
3

これを使うだけ....

ProcessStartInfo startInfo = new ProcessStartInfo("appwiz.cpl");
startInfo.UseShellExecute = true;
Process.Start(startInfo);
于 2016-01-08T14:25:11.453 に答える
1

Step1 : マシンからシステム ディレクトリを読み取ります。Step2 : Process を使用して ControlPanel を起動します

            **Process.Start(System.Environment.SystemDirectory + @"\appwiz.cpl");**
于 2011-12-28T11:49:03.500 に答える
1

以前に別の質問で述べたように:

コマンド プロンプトに「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); }
    }
于 2015-03-20T01:09:12.200 に答える