cの私は、しかし、これはウィンドウが、既に開いている事実を考慮していませんは - それが、私の場合は#
System.Diagnostics.Process.Start("iexplore.exe", uniquePartOfUrl);
経由でIEで何かをオープンしようとしていますそれをちょうど使用したいです。これはどうすればできますか? CodeProjectの上で
cの私は、しかし、これはウィンドウが、既に開いている事実を考慮していませんは - それが、私の場合は#
System.Diagnostics.Process.Start("iexplore.exe", uniquePartOfUrl);
経由でIEで何かをオープンしようとしていますそれをちょうど使用したいです。これはどうすればできますか? CodeProjectの上で
、このプロジェクトは、それはあなたにそれを行うための一つの方法を提供します「Capturing the Running IE Instances in C#」
に存在します。
WIN32 APIを使用すると、開いているウィンドウを列挙し、それらをフィルタリングしてIEの実行インスタンスを取得できます。
あなたにとって参考になるかもしれません。
あなたはこのような何か試すことができます:私は今それをテストするための便利なコンパイラを持っていないが、アイデアは、それは単に「このURLを開く」ためにOSに伝えるべきであるということです
var p = new System.Diagnostics.Process();
var s = new System.Diagnostics.ProcessStartInfo(uniquePartOfUrl);
s.UseShellExecute = true;
s.WindowStyle = ProcessWindowStyle.Normal;
p.StartInfo = s;
p.Start();
をし、 OSはアプリケーションに応じて既存のウィンドウを使用する方法を決定させます。試してみる価値。
IMO、Webページを開くための最良の方法は、次の構文を使用することです:
Process.Start("http://www.mysite.com");
OSは、ユーザーのデフォルトのブラウザで開き、それが持っている場合は、ブラウザのタブ機能を使用します。この方法その能力。どんなブラウザでも使いたいブラウザを選んだら、特別なブラウザを使わないようにするプログラムよりも、私をもっと悩ますものはありません。ここでユーザーの決定を尊重することは良いことです。
IEの既存のウィンドウを再利用するためには、2種類の方法
IEの現在のインスタンスを検索し、そのインスタンスを使用して、それを開くには、それに近づくことができます。これは、@LaGrandMereによって与えられた答えによってカバーされます。
組み込みの設定を使用してIEを設定すると、再利用されます。この方法を使用するには、this Microsoft support articleの指示に従います。
なぜウィンドウハンドルが必要ですか? IEのAPIはCOMです。新しいウィンドウ/タブを制御したい場合は、IWebBrowser2を要求する必要があります(ただし、IWebBrowser2からウィンドウ/タブハンドルを取得できます) –