如何以编程方式打开自定义控制面板,例如custom.cpl?具体来说,如何在作为32位应用程序运行时打开64位cpl?
答案 0 :(得分:5)
由于我没有在SO上找到一个好的答案,这是我研究的解决方案:
::ShellExecute(m_hWnd, NULL, _T("control.exe"), _T("access.cpl"), NULL, SW_SHOW);
答案 1 :(得分:5)
Vista添加了对规范名称的支持,因此您无需硬编码DLL文件名和选项卡索引
实施例: WinExec(“%systemroot%\ system32 \ control.exe / name Microsoft.WindowsUpdate”,SW_NORMAL);
(姓名总是英文)
请参阅MSDN以获取列表
XP / 2000支持“control.exe鼠标”和其他一些关键字,请参阅相同的MSDN页面列表(您可以通过在control.exe上运行字符串找到一些未记录的文件)
答案 2 :(得分:1)
第一步: 从机器读取系统目录。 第2步 : 使用Process启动ControlPanel
**Process.Start(System.Environment.SystemDirectory + @"\appwiz.cpl");**
答案 3 :(得分:1)
只需使用此....
ProcessStartInfo startInfo = new ProcessStartInfo("appwiz.cpl");
startInfo.UseShellExecute = true;
Process.Start(startInfo);
答案 4 :(得分:0)
正如我之前在另一个问题中提到的那样:
如果在“命令提示符”中键入“Start Control”或“Control”,它将打开“控制面板”。
因此,只需运行一个流程。
本规范(Bellow)对我来说非常有用:
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); }
}