這個問題來自論壇提問,vs2005的webbrowser控件如何接收鼠標事件,很多事情其實自己動動腦子就有辦法的。主要是3步,給dom對象插入js腳本去響應鼠標-〉通過url跳轉去通知webbrowser-〉截獲跳轉事件去c#中處理
示例代碼:
- using ?System;
- using ?System.Windows.Forms;
- using ?mshtml;
- using ?SHDocVw;
- namespace ?WindowsApplication2
- {
- ???? public ?partial? class ?Form1?:?Form
- ????{
- ???????? public ?Form1()
- ????????{
- ????????????InitializeComponent();
- ????????}
- ???????? private ? void ?Form1_Load( object ?sender,?EventArgs?e)
- ????????{
- ???????????? this .webBrowser1.Navigating?+=? new ?WebBrowserNavigatingEventHandler(webBrowser1_Navigating);
- ???????????? this .webBrowser1.Navigate( "http://www.google.com" );
- ????????????SHDocVw.WebBrowser?wb?=? this .webBrowser1.ActiveXInstance? as ?SHDocVw.WebBrowser;
- ????????????wb.NavigateComplete2?+=? new ?SHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(wb_NavigateComplete2);
- ????????}
- ???????? void ?webBrowser1_Navigating( object ?sender,?WebBrowserNavigatingEventArgs?e)
- ????????{
- ???????????? if ?(e.Url.ToString().ToLower().Trim( '/' )?==? "cmd://onmousedown" )
- ????????????{
- ????????????????MessageBox.Show( "jinjazz?路過" );
- ????????????????e.Cancel?=? true ;
- ????????????}
- ????????}
- ???????? void ?wb_NavigateComplete2( object ?pDisp,? ref ? object ?URL)
- ????????{
- ????????????mshtml.IHTMLDocument2?doc?=?( this .webBrowser1.ActiveXInstance? as ?SHDocVw.WebBrowser).Document? as ?mshtml.IHTMLDocument2;
- ????????????doc.parentWindow.execScript( "document.οnmοusedοwn=function(e)?{?window.location='cmd://onmousedown'}" ,? "javascript" );
- ????????}
- ????}
- }