论WebBrowser捕获window.close
最近在做项目的时候用到了WebBrowser,需要在关闭网页的同时关闭WebBroser所在的WinForm界面,在网上及MSDN找到的方法都不是很好,偶然在code
project中找到了比较好的方法,特意摘录再次,供大家分享。
实现方案:
- 重写
WndProc
方法
- 判断
WM_PARENTNOTIFY
消息
-
判断
WM_DESTROY
消息参数
- 执行事件委托方法
实现源码参考
#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直接饮用版本,你懂得
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桌面程序中引入Web控件,实现在.NET桌面程序中集成h5页面,并呈现良好的显示效果。去除了EO.WebBrowser.WebView第一次加载时弹框的问题,并且保证视频在EO.WebBrowser.WebView中的正常播放
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)免安装dll.C# 直接引用版本。 EO.WebBrowser,就是给.NET用的Chrome浏览器内核,可以在WinForm中嵌入Chrome浏览器,客户端不用安装浏览器都可以。 无缝集成chrome浏览器引擎和.net...
WebBrowser.Document.InvokeScript()方法声称提供了一种与WebBrowser HTML文档中JavaScript代码进行交互的方法。 但是,试图弄乱我无法控制的第三方JavaScript(意思是:包含在我无法更改的外部网页中),...
c# 桌面应用 WebBrowser 是IE浏览器内核,目前很多网站不支持了,从国外网站找到一个 谷歌内核的WebBrowser 名字叫 EO.WebBrowser ,比较好用,本文档是他的帮助文档。
完整获取webBrowser1的Cookie HttpOnly的Cookie
webbrowser+Nsoup 实现百度文库内容复制 NSoup.Nodes.Document NSoupDoc = NSoup.NSoupClient.Parse(webBrowser1.Document.Body.InnerHtml); var strpagecount = NSoupDoc.Body.Select(".page-count").Text; if ...
1.获得网页中变量值 ...值得说明的是,变量可以是javascript定义的,也可以是vbscript定义的,如果Webbrowser1中找不到该变量,调用会触发一个异常事件,即变量currID不存在 2.执行网页中的函数 ......
通过重写`WebBrowser.NewWindow`事件,可以阻止在新窗口中打开网页,而是选择在当前WebBrowser控件内打开。 4. **新WebBrowser控件打开链接**: 当`NewWindow`事件触发时,可以创建新的WebBrowser控件并导航到...
Self.Close(); // 关闭WebBrowser控件所在窗体 end else { 调用基类方法处理其他消息 } inherited; end; ``` #### 2. 文本选择与复制的问题 另一个常见的问题是,在某些情况下,用户可能无法正常地选择或...
5,实现点链接而不弹窗,右击WebBrowser控件选择属性,在相应属性面板中查看它所支持的事件,激活NewWindow事件,在事件函数中添加如下代码; private void webBrowser1_NewWindow(object sender, CancelEventArgs ...
VB.net捕获整个网页并保存成图像有软件 Private Sub GetImage() If WebBrowser1.Document Is Nothing Then Return End If Try Dim scrollWidth As Integer Dim scrollHeight As Integer scrollHeight = ...
- 通过`WebBrowser1.Document.parentWindow`获取当前文档的父窗口对象。 - 使用`navigator`属性获取浏览器的信息对象。 - 通过`oNav.userAgent`获取并打印浏览器的用户代理字符串(即用户代理标识符,用来表示...
web.ParentWindow:=Self.Handle; web.SetBounds(100,100,100,100); web.OnDocumentComplete:=WebBrowser1DocumentComplete; web.Navigate('http://www.3yeah.com/'); end; procedure TForm1.Button2Click...
this.WebBrowser.Document.Window.Error += new HtmlElementErrorEventHandler(Window_Error); void Window_Error(object sender, HtmlElementErrorEventArgs e) { // 自己的处理代码 e.Handled = true; } ``` ...
VB编程WebBrowser控件开发经典代码Classic VB programming code WebBrowser Control Development
本文将深入探讨如何在C#中创建一个`WebBrowser`实例类,以便捕获并处理这些错误。 首先,我们需要了解`WebBrowser`控件的基本用法。在C#中,你可以通过在窗体设计器中添加控件或在代码中动态创建来使用`WebBrowser`...