using CefSharp; using CefSharp.WinForms; public class CustomRequestHandler : IRequestHandler { public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, PopupFeatures popupFeatures, IWindowInfo windowInfo, bool isUserGesture, string[] windowName, ref bool cancel) { // 在這裡處理彈出窗口事件 // 例如:顯示目標URL MessageBox.Show("Popup URL: " + targetUrl); // 設置 cancel 為 true 以阻止彈出窗口 cancel = true; return true; // 返回 true 以允許其他處理 } // 其他 IRequestHandler 方法可以根據需要實現 public bool OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { return false; // 返回 false 以允許資源加載 } public void OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { // 處理資源響應 } // 其他方法... } // 在你的主窗口或初始化代碼中設定請求處理程序 public void InitializeBrowser() { var browser = new ChromiumWebBrowser("http://your-url.com") { RequestHandler = new CustomRequestHandler() }; this.Controls.Add(browser); browser.Dock = DockStyle.Fill; }
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using CefSharp; using CefSharp.WinForms; namespace WebSite_B2B_Web_Scraping { class Dummy_Task_WebControl {} public partial class FormMain : Form { //variable browser ChromiumWebBrowser chrome, chrome_popup; private void initialize_browser() { try { CefSettings settings = new CefSettings(); Cef.Initialize(settings); //main browser chrome = new ChromiumWebBrowser(""); LifespanHandler life = new LifespanHandler(); chrome.LifeSpanHandler = life; life.popup_request += life_popup_request; this.panel_Web.Controls.Add(chrome); chrome.Dock = DockStyle.Fill; //popup browser chrome_popup = new ChromiumWebBrowser(""); this.panel_Popup.Controls.Add(chrome_popup); chrome_popup.Dock = DockStyle.Fill; Console.WriteLine("Browser initialized."); } catch (Exception ex) { MessageBox.Show("Error in initializing the browser. Error: " + ex.Message); } } private string get_root_directory() { // get directory where exe is executing string path = System.Environment.CurrentDirectory; //find index initiale paste bin int indice = path.IndexOf("bin"); //get path root directory project path = path.Substring(0, indice); return path.Replace(@"\", @"/"); } private void carregar_popup_new_browser(string url) { //open pop up in second browser chrome_popup.Load(url); } private void frm_main_FormClosing(object sender, FormClosingEventArgs e) { //close o object cef Cef.Shutdown(); Application.Exit(); } private void Task_InitialBrowsers(object sender, EventArgs e) { //initialize the browser // this.initialize_browser(); } #region life_popup_request(string obj) private void life_popup_request(string obj) { //function for open pop up in a new browser this.carregar_popup_new_browser(obj); } #endregion private void Task_Connection(object sender, EventArgs e) { initialize_browser(); try { //open a new site chrome.Load("https://b2b.WebSite.com/login.aspx"); } catch (Exception ex) { MessageBox.Show("Error in open the site. Error:" + ex.Message); } } } }
using System; using System.Windows.Forms; using CefSharp; using CefSharp.WinForms; namespace WebSite_B2B_Web_Scraping { class Dummy_Task_WebControl {} public partial class FormMain : Form { // variable browser ChromiumWebBrowser chrome, chrome_popup; private void initialize_browser() { try { CefSettings settings = new CefSettings(); Cef.Initialize(settings); // main browser chrome = new ChromiumWebBrowser("") { RequestHandler = new CustomRequestHandler() // 設置請求處理程序 }; LifespanHandler life = new LifespanHandler(); chrome.LifeSpanHandler = life; life.popup_request += life_popup_request; this.panel_Web.Controls.Add(chrome); chrome.Dock = DockStyle.Fill; // popup browser chrome_popup = new ChromiumWebBrowser(""); this.panel_Popup.Controls.Add(chrome_popup); chrome_popup.Dock = DockStyle.Fill; Console.WriteLine("Browser initialized."); } catch (Exception ex) { MessageBox.Show("Error in initializing the browser. Error: " + ex.Message); } } private string get_root_directory() { // get directory where exe is executing string path = System.Environment.CurrentDirectory; // find index initiale paste bin int indice = path.IndexOf("bin"); // get path root directory project path = path.Substring(0, indice); return path.Replace(@"\", @"/"); } private void carregar_popup_new_browser(string url) { // open pop up in second browser chrome_popup.Load(url); } private void frm_main_FormClosing(object sender, FormClosingEventArgs e) { // close o object cef Cef.Shutdown(); Application.Exit(); } private void Task_InitialBrowsers(object sender, EventArgs e) { // initialize the browser // this.initialize_browser(); } #region life_popup_request(string obj) private void life_popup_request(string obj) { // function for open pop up in a new browser this.carregar_popup_new_browser(obj); } #endregion private void Task_Connection(object sender, EventArgs e) { initialize_browser(); try { // open a new site chrome.Load("https://b2b.WebSite.com/login.aspx"); } catch (Exception ex) { MessageBox.Show("Error in open the site. Error:" + ex.Message); } } } // 自定義請求處理程序 public class CustomRequestHandler : IRequestHandler { public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, PopupFeatures popupFeatures, IWindowInfo windowInfo, bool isUserGesture, string[] windowName, ref bool cancel) { // 在這裡處理彈出窗口事件 MessageBox.Show("Popup URL: " + targetUrl); // 設置 cancel 為 true 以阻止彈出窗口 cancel = true; return true; // 返回 true 以允許其他處理 } public bool OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { return false; // 返回 false 以允許資源加載 } public void OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { // 處理資源響應 } // 其他 IRequestHandler 方法可以根據需要實現 } }
using CefSharp;
public class CustomRequestHandler : IRequestHandler { public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, PopupFeatures popupFeatures, IWindowInfo windowInfo, bool isUserGesture, string[] windowName, ref bool cancel) { // 在這裡處理彈出窗口事件 MessageBox.Show("Popup URL: " + targetUrl); // 設置 cancel 為 true 以阻止彈出窗口 cancel = true; return true; // 返回 true 以允許其他處理 } public bool OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { return false; // 返回 false 以允許資源加載 } public void OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { // 處理資源響應 } // 其他 IRequestHandler 方法可以根據需要實現 }
chrome = new ChromiumWebBrowser("") { RequestHandler = new CustomRequestHandler() // 設置請求處理程序 };
using CefSharp; public class CustomRequestHandler : IRequestHandler { public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, PopupFeatures popupFeatures, IWindowInfo windowInfo, bool isUserGesture, string[] windowName, ref bool cancel) { // 在這裡處理彈出窗口事件 MessageBox.Show("Popup URL: " + targetUrl); // 設置 cancel 為 true 以阻止彈出窗口 cancel = true; return true; // 返回 true 以允許其他處理 } public bool OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { return false; // 返回 false 以允許資源加載 } public void OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { // 處理資源響應 } public bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, bool userGesture) { // 處理從標籤頁打開的 URL return false; // 返回 false 以允許其他處理 } // 可選實現 public IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { return null; // 返回 null 以不使用過濾器 } public bool OnQuotaRequest(IWebBrowser browserControl, IBrowser browser, IFrame frame, string originUrl, long newSize, IQuotaCallback callback) { return false; // 返回 false 以允許請求 } public bool OnProtocolExecution(IWebBrowser browserControl, IBrowser browser, IFrame frame, string url) { return false; // 返回 false 以允許請求 } }
using CefSharp;
public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, PopupFeatures popupFeatures, IWindowInfo windowInfo, bool isUserGesture, string[] windowName, ref bool cancel) { // 在這裡處理彈出窗口事件 MessageBox.Show("Popup URL: " + targetUrl); // 設置 cancel 為 true 以阻止彈出窗口 cancel = true; return true; // 返回 true 以允許其他處理 }
using CefSharp; using System.Windows.Forms; public class CustomRequestHandler : IRequestHandler { public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, PopupFeatures popupFeatures, IWindowInfo windowInfo, bool isUserGesture, string[] windowName, ref bool cancel) { // 在這裡處理彈出窗口事件 MessageBox.Show("Popup URL: " + targetUrl); // 設置 cancel 為 true 以阻止彈出窗口 cancel = true; return true; // 返回 true 以允許其他處理 } public bool OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { return false; // 返回 false 以允許資源加載 } public void OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { // 處理資源響應 } public bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, bool userGesture) { return false; // 返回 false 以允許其他處理 } // 可選實現 public IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { return null; // 返回 null 以不使用過濾器 } public bool OnQuotaRequest(IWebBrowser browserControl, IBrowser browser, IFrame frame, string originUrl, long newSize, IQuotaCallback callback) { return false; // 返回 false 以允許請求 } public bool OnProtocolExecution(IWebBrowser browserControl, IBrowser browser, IFrame frame, string url) { return false; // 返回 false 以允許請求 } }