这个问题来自论坛提问,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.onmousedown=function(e) { window.location='cmd://onmousedown'}" , "javascript" );
- }
- }
- }