4

タブ機能、ポップアップ ブロック、および新しいタブへのリダイレクトを備えた Web ブラウザーを再作成したいと考えています。ここで私が到達できたもの:

firstTabWebBrowser.Navigate("www.site-with-popup.com"); //inizializa my broeser navigation

//...

(firstTabWebBrowser.ActiveXInstance as SHDocVw.WebBrowser).NewWindow3 += new SHDocVw.DWebBrowserEvents2_NewWindow3EventHandler(Browser_NewWindow3); //new window 3 event    

//...

private void Browser_NewWindow3(ref object ppDisp, ref bool Cancel, uint dwFlags, string bstrUrlContext, string bstrUrl)
{

Cancel = true; //block a new IE window to be opened

TabPage addedTabPage = new TabPage("redirected tab"); //create new tab
tabControl_webBrowsers.TabPages.Add(addedTabPage); //add new tab to the TabControl
System.Windows.Forms.WebBrowser newTabWebBrowser = new System.Windows.Forms.WebBrowser() //create new WebBrowser inside the new tab
{
   Parent = addedTabPage,
   Dock = DockStyle.Fill
};

System.Windows.Forms.WebBrowser actualWebBrowser = (System.Windows.Forms.WebBrowser)tabControl_webBrowsers.SelectedTab.GetChildAtPoint(new Point(10, 10)); //the only way I've found to select the actual webBrowser
ppDisp = actualWebBrowser.ActiveXInstance; //try to pass actual browser reference to the new browser, but I can't notice any difference without this line

newTabWebBrowser.Navigate(bstrUrl); //navigate to the popup destination url

(newTabWebBrowser.ActiveXInstance as SHDocVw.WebBrowser).NewWindow3 += new SHDocVw.DWebBrowserEvents2_NewWindow3EventHandler(Browser_NewWindow3); //attach this function to the new browser            

}      

試み

いくつかのサイトでテストしましたが、新しいタブでのポップアップ リダイレクトは機能しますが、新しく生成された webBrowser はセッション認証を失ったようです。私に近いと思われるこの前の質問を見つけましたが、答えに従っても問題は解決しません。したがって、これは元の webBrowser の Cookie が原因である可能性があり、actualWebBrowser.Document.Cookie を介してアクセスできますが、新しいブラウザーに転送できませんでした。

  • newTabWebBrowser.ActiveXInstanceは読み取り専用であるためnewTabWebBrowser.ActiveXInstance = actualWebBrowser.ActiveXInstance;ppDisp = actualWebBrowser.ActiveXInstance;どちらが非常に悪く聞こえ、コンパイルできません。
  • newTabWebBrowser.Document.Cookie = actualWebBrowser.Document.Cookie;アプリケーションをブロックしないが、機能をスキップするエラーを生成しますBrowser_NewWindow3()
  • 残念ながら私はこれらを使用できませんでした。おそらくいくつかのステートメントを見逃していますInternetSetCookie(url, cookie);[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern bool InternetSetCookie(string Url, string Cookie);

質問

新しいブラウザ (新しいタブ内) に「親」のセッション/ログイン情報を記憶させるにはどうすればよいですか?

誰も答えようとさえしませんでした。この質問を間違った方法で投稿した場合、または質問を投稿できる別のC#専用フォーラムが存在する場合は、お知らせください


図式:

ここに画像の説明を入力

4

0 に答える 0