質問: " + ((SHDocVw.InternetExplorer)pDisp).LocationURL); Console.WriteLine("NextUrl=" + URL.ToString()); //throw new NotImplementedException(); } private void Ie_DocumentComplete(object pDisp, ref object URL) { //処理とか } ```
回答: 自分はSHDocVw.InternetExplorerを使用したことが無かったのですが、回答が付かないみたいなので少し調べてみました。 中途半端ですがとりあえずヒントになればと思います。 stackoverflow.com をヒントに ``` public void StartIE(string url) { ~ 同じなので省略 ~ ie.NewWindow3 += Ie_NewWindow3; } //こんな感じ・・・ private void Ie_NavigateComplete2(object pDisp, ref object URL) { ~ 同じなので省略 ~ } // 新しいWindowの処理 private void Ie_NewWindow3(ref object ppDisp, ref bool Cancel, uint dwFlags, string bstrUrlContext, string bstrUrl) { SHDocVw.InternetExplorer newIe = new SHDocVw.InternetExplorer(); ppDisp = newIe.Application; newIe.NavigateComplete2 += Ie_NavigateComplete2; newIe.DocumentComplete += Ie_DocumentComplete; newIe.NewWindow3 += Ie_NewWindow3; } private void Ie_DocumentComplete(object pDisp, ref object URL) { ~ 同じなので省略 ~ } ``` という感じで NewWindow3イベントで新しく作成したオブジェクトを設定することでとりあえず動作しました。 但しこのままでは以下の問題もありますし、自分自身、正しく理解していないコードなので修正・調査して頂けたらと思います。(特にcomオブジェクトのようなので解放処理に気を付けてください) 問題点1:解放処理は書いてません 問題点2:新しいタブで開くを選択した場合でも新しいWindowで開いてしまいます。 問題点2のほうは新たに作成したSHDocVw.InternetExplorerに対して何らかの設定を行うことが可能かもしれません・・・