我有这段代码:
public void OpenInterOption()
{
System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo();
proc.FileName = @"C:\\Windows\\System32\\RunDll32.exe";
proc.Arguments = "shell32.dll,Control_RunDLL inetcpl.cpl,Internet,4";
System.Diagnostics.Process.Start(proc);
}
结果是Internet Properties窗口打开
但实际上我想在“Internet属性”选项卡中打开“局域网(LAN)设置窗口”
我认为这一行存在问题:"shell32.dll,Control_RunDLL inetcpl.cpl,Internet,4";
是否需要更多参数?
答案 0 :(得分:2)
我不知道打开网络设置是否是正确的方法,因为如果你有多个局域网包括无线局域网你想打开哪一个?因此,您最好打开网络连接设置,让用户决定打开哪一个。因此,您可以使用以下代码打开网络连接设置,如:
ProcessStartInfo startInfo = new ProcessStartInfo("NCPA.cpl");
startInfo.UseShellExecute = true;
Process.Start(startInfo);
<强>更新强>:
您无法使用任何.cpl程序直接调用LAN Property Settings
。但是,使用您自己的代码并使用SendKeys
这样的非常规方式:
System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo();
proc.FileName = @"C:\\Windows\\System32\\RunDll32.exe";
proc.Arguments = "shell32.dll,Control_RunDLL inetcpl.cpl,Internet,4";
System.Diagnostics.Process.Start(proc);
SendKeys.Send("{TAB}{TAB}{TAB}{TAB}{ENTER}");
另一种方法是使用Alt+L
代替Tab
。现在,对我而言,这更加确定,因为在Tab
中你永远不会知道是否所有人都会立即注册,或者它会跳到确切数量的位置,如按钮。但是,我必须使用Timer
以确保它真的会像这样生效:
tmr.Interval = 500;
System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo();
proc.FileName = @"C:\\Windows\\System32\\RunDll32.exe";
proc.Arguments = "shell32.dll,Control_RunDLL inetcpl.cpl,Internet,4";
System.Diagnostics.Process.Start(proc);
tmr.Tick += new EventHandler(tmr_Tick);
tmr.Start();
您Event handler
的{{1}}:
Timer
现在,请确保您在班级中将 void tmr_Tick(object sender, EventArgs e)
{
SendKeys.SendWait("%L");
tmr.Stop();
}
声明为全局,无论是在表单内还是其他类似内容:
Timer
就像我的情况一样,我把它放在 Timer tmr = new Timer();
类之下和之内,如:
Form1
不是最优雅,但它会完成工作; - )