我不知道打开网络设置是否是正确的方法,因为如果你有多个局域网,包括无线局域网,你想打开哪一个?因此,您最好打开网络连接设置,让用户决定打开哪个设置。因此,您可以使用下面的代码打开网络连接设置,例如:
ProcessStartInfo startInfo = new ProcessStartInfo("NCPA.cpl");
startInfo.UseShellExecute = true;
Process.Start(startInfo);
更新:
您不能LAN Property Settings
使用任何 .cpl 程序直接调用。但是,有一种非常规的方式可以使用您自己的代码并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
的Timer
:
void tmr_Tick(object sender, EventArgs e)
{
SendKeys.SendWait("%L");
tmr.Stop();
}
现在,请确保Timer
在您的类中声明为全局,无论是在表单内还是在其他类似的地方:
Timer tmr = new Timer();
就像在我的情况下,我把它放在Form1
类下面和里面:
public partial class Form1 : Form
{
Timer tmr = new Timer();
.....more code here not shown
不是最优雅的,但它会完成工作;-)