按代码打开局域网(LAN)设置窗口

时间:2013-06-15 05:43:08

标签: c# winforms

我有这段代码:

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";是否需要更多参数?

1 个答案:

答案 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

不是最优雅,但它会完成工作; - )