`
nabber
  • 浏览: 8278 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

论WebBrowser捕获window.close

阅读更多

论WebBrowser捕获window.close 

     最近在做项目的时候用到了WebBrowser,需要在关闭网页的同时关闭WebBroser所在的WinForm界面,在网上及MSDN找到的方法都不是很好,偶然在code project中找到了比较好的方法,特意摘录再次,供大家分享。

 

实现方案:

  1. 重写 WndProc 方法
  2. 判断 WM_PARENTNOTIFY 消息
  3. 判断 WM_DESTROY 消息参数
  4. 执行事件委托方法

实现源码参考

#region Raises the Quit event when the browser window is about to be destroyed  
 
        /// <summary>  
        /// Overridden  
        /// </summary>  
        /// <param name="m">The <see cref="Message"/> send to this procedure</param>  
        [PermissionSet(SecurityAction.LinkDemand, Name = "FullTrust")]  
        protected override void WndProc(ref Message m)  
        {  
            if (m.Msg == (int)WindowsMessages.WM_PARENTNOTIFY)  
            {  
                //int lp = m.LParam.ToInt32();  
                int wp = m.WParam.ToInt32();  
 
                int X = wp & 0xFFFF;  
                //int Y = (wp >> 16) & 0xFFFF;  
                if (X == (int)WindowsMessages.WM_DESTROY)  
                    this.OnQuit();  
            }  
 
            base.WndProc(ref m);  
        }  
 
        /// <summary>  
        /// A list of all the available window messages  
        /// </summary>  
        enum WindowsMessages  
        {  
            WM_DESTROY = 0x2,   
            WM_PARENTNOTIFY = 0x210
        }  
 
        /// <summary>  
        /// Raises the <see cref="Quit"/> event  
        /// </summary>  
        protected void OnQuit()  
        {  
            EventHandler h = Quit;  
            if (null != h)  
                h(this, EventArgs.Empty);  
        }  
 
        /// <summary>  
        /// Raised when the browser application quits  
        /// </summary>  
        /// <remarks>  
        /// Do not confuse this with DWebBrowserEvents2.Quit... That's something else.  
        /// </remarks>  
        public event EventHandler Quit; 
 
 
        #endregion 

分享到:
评论

相关推荐

    EO.WebBrowser免安装dll.C# VB直接饮用版本,你懂得

    EO.WebBrowser免安装dll.C# VB直接饮用版本,你懂得

    EO.WebBrowser for .NET 16.2.37

    NuGet Gallery | EO.WebBrowser for .NET 16.2.37 https://www.nuget.org/packages/EO.WebBrowser/ 出自 .NET Google 浏览器内核 Eo.Webbrowser | Flyヽ Blog http://lfei.org/net-eo-webbrowser/

    VS.NET桌面程序集成EO.WebBrowser.WebView组件,免弹框版

    在VS.NET桌面程序中引入Web控件,实现在.NET桌面程序中集成h5页面,并呈现良好的显示效果。去除了EO.WebBrowser.WebView第一次加载时弹框的问题,并且保证视频在EO.WebBrowser.WebView中的正常播放

    delphi动态 WebBrowser 释放问题.txt

    web.ParentWindow:=Self.Handle; web.SetBounds(100,100,100,100); web.OnDocumentComplete:=WebBrowser1DocumentComplete; web.Navigate('http://www.3yeah.com/'); end; procedure TForm1.Button2Click...

    EO.WebBrowser(v23.4.26)

    EO.WebBrowser最新版本(v23.4.26)免安装dll.C# 直接引用版本。 EO.WebBrowser,就是给.NET用的Chrome浏览器内核,可以在WinForm中嵌入Chrome浏览器,客户端不用安装浏览器都可以。 无缝集成chrome浏览器引擎和.net...

    使用WebBrowser.Document.InvokeScript()来处理外部JavaScript

    WebBrowser.Document.InvokeScript()方法声称提供了一种与WebBrowser HTML文档中JavaScript代码进行交互的方法。 但是,试图弄乱我无法控制的第三方JavaScript(意思是:包含在我无法更改的外部网页中),...

    EO.WebBrowser帮助文档,一款谷歌内核的WebBrowser

    c# 桌面应用 WebBrowser 是IE浏览器内核,目前很多网站不支持了,从国外网站找到一个 谷歌内核的WebBrowser 名字叫 EO.WebBrowser ,比较好用,本文档是他的帮助文档。

    完整获取webBrowser1.Document.Cookie取不到HttpOnly的Cookie

    完整获取webBrowser1的Cookie HttpOnly的Cookie

    webbrowser+Nsoup.rar

    webbrowser+Nsoup 实现百度文库内容复制 NSoup.Nodes.Document NSoupDoc = NSoup.NSoupClient.Parse(webBrowser1.Document.Body.InnerHtml); var strpagecount = NSoupDoc.Body.Select(".page-count").Text; if ...

    WebBrowser常见用法.rar

    1.获得网页中变量值 ...值得说明的是,变量可以是javascript定义的,也可以是vbscript定义的,如果Webbrowser1中找不到该变量,调用会触发一个异常事件,即变量currID不存在 2.执行网页中的函数 ......

    VB控件WEBBROWSER基本及进阶技巧合集.doc

    通过重写`WebBrowser.NewWindow`事件,可以阻止在新窗口中打开网页,而是选择在当前WebBrowser控件内打开。 4. **新WebBrowser控件打开链接**: 当`NewWindow`事件触发时,可以创建新的WebBrowser控件并导航到...

    Delphi中webBrowser控件bug.txt

    Self.Close(); // 关闭WebBrowser控件所在窗体 end else { 调用基类方法处理其他消息 } inherited; end; ``` #### 2. 文本选择与复制的问题 另一个常见的问题是,在某些情况下,用户可能无法正常地选择或...

    C#中WebBrowser控件的简单调用

    5,实现点链接而不弹窗,右击WebBrowser控件选择属性,在相应属性面板中查看它所支持的事件,激活NewWindow事件,在事件函数中添加如下代码; private void webBrowser1_NewWindow(object sender, CancelEventArgs ...

    VB.net捕获整个网页并保存成图像

    VB.net捕获整个网页并保存成图像有软件 Private Sub GetImage() If WebBrowser1.Document Is Nothing Then Return End If Try Dim scrollWidth As Integer Dim scrollHeight As Integer scrollHeight = ...

    vb6_Webbrowser控件使用技巧

    - 通过`WebBrowser1.Document.parentWindow`获取当前文档的父窗口对象。 - 使用`navigator`属性获取浏览器的信息对象。 - 通过`oNav.userAgent`获取并打印浏览器的用户代理字符串(即用户代理标识符,用来表示...

    delphi动态 WebBrowser 释放问题.rar

    web.ParentWindow:=Self.Handle; web.SetBounds(100,100,100,100); web.OnDocumentComplete:=WebBrowser1DocumentComplete; web.Navigate('http://www.3yeah.com/'); end; procedure TForm1.Button2Click...

    WebBrowser脚本错误的完美解决方案

    this.WebBrowser.Document.Window.Error += new HtmlElementErrorEventHandler(Window_Error); void Window_Error(object sender, HtmlElementErrorEventArgs e) { // 自己的处理代码 e.Handled = true; } ``` ...

    VB.programming.code.WebBrowser.Control.Development_ vb webbrowse

    VB编程WebBrowser控件开发经典代码Classic VB programming code WebBrowser Control Development

    C# webbrowser捕获错误页面实例类

    本文将深入探讨如何在C#中创建一个`WebBrowser`实例类,以便捕获并处理这些错误。 首先,我们需要了解`WebBrowser`控件的基本用法。在C#中,你可以通过在窗体设计器中添加控件或在代码中动态创建来使用`WebBrowser`...

Global site tag (gtag.js) - Google Analytics