1

私はこのコードを持っています:

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);
}

その結果、[インターネット プロパティ] ウィンドウが開きます。
しかし、実際には、[インターネットのプロパティ] タブで [ローカル エリア ネットワーク (LAN) 設定ウィンドウ] を開きたいと思っています。
私はこの行の問題だと思います:"shell32.dll,Control_RunDLL inetcpl.cpl,Internet,4";もっと引数が必要ですか?

4

1 に答える 1

2

ネットワーク設定を開くことが正しい方法であるかどうかはわかりません。ワイヤレスを含む複数のLANがある場合、どのLANを開きたいのでしょうか? そのため、代わりにネットワーク接続設定を開いて、ユーザーにどちらを開くかを決定させる方がよいでしょう。したがって、以下のコードを使用して、次のようなネットワーク接続設定を開くことができます。

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の代わりに使用することですTabTabすべてがすぐに登録されるのか、それともボタンなどの正確な数の場所にホップするのかがわからないためです。ただし、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

最もエレガントではありませんが、仕事は完了します;-)

于 2013-06-15T06:22:22.430 に答える