0

ac# コードからプロセスとしてブラウザー インスタンスを開始しようとしています。次に、ブラウザの同じインスタンスを強制終了したいと思います。プロセス id で同じインスタンスを見つけようとしました。しかし、プロセスIDは、タスクマネージャーと、プロセスを開始したときに取得した初期IDで異な​​ります。解決策は何ですか?なぜこうなった?開発環境はwindows7です。

  int ID= 0;
  void Start()
    {
        ProcessStartInfo startInfo = new ProcessStartInfo("iexplore.exe");
        startInfo.Arguments = "http://www.google.com";
        Process ieProcess = Process.Start(startInfo);
        ID= ieProcess.Id;
    }
  void Stop()
   {
    foreach (Process p in System.Diagnostics.Process.GetProcessesByName("iexplore"))
     {
       if ((p.Id == ID))
        {
                p.Kill();
        }
     }
4

3 に答える 3

1

IEがすでに起動されている場合、このコードは機能しません。すべてのIEブラウザーを閉じてから、コードを実行してみてください。それが機能する場合は、次のリンクで提案されている解決策を探す必要があるかもしれません

管理者権限がある場合でも、Windows 732ビットで同様のpost
-Process.kill()が拒否されました

于 2012-12-06T07:27:42.663 に答える
0

同様の問題がありますが、開始した IE プロセスを強制終了したくないだけで、焦点を合わせたいのです。5 つの IE ウィンドウを起動する 1 つのアプリがあります (タブではなく、固有のウィンドウ)。各 IE ウィンドウを起動する PID を保存します。特定の時間に、次のことができるようにしたいと考えています。

  • PIDを選択し、
  • そのPIDに関連するIEウィンドウを見つけます
  • 焦点を合わせる (他を最小化する)

これは XP と IE6 を使用して機能しました (環境に必要です) 現在、Win 7 と IE 8 を使用している場合、保存した PID が見つからないため、フォーカスされているウィンドウを変更できなくなりました。

于 2013-01-23T21:33:56.020 に答える
0
于 2012-12-06T06:37:39.197 に答える