利用WebBrower封装的自己的浏览器MyIE源代码.doc_第1页
利用WebBrower封装的自己的浏览器MyIE源代码.doc_第2页
利用WebBrower封装的自己的浏览器MyIE源代码.doc_第3页
利用WebBrower封装的自己的浏览器MyIE源代码.doc_第4页
利用WebBrower封装的自己的浏览器MyIE源代码.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用WebBrower封装的自己的浏览器MyIE源代码用途:封装只能访问自己的web应用解决问题:1、弹出窗口不会跳出,解决了出现IE浏览器的问题2、获得访问界面的Title作为浏览器的Title一、封装WebBrowser(源自互联网网友提供的代码,已不知出处,非常感谢)using System;using System.Collections.Generic;using System.Text;using System.Windows.Forms;using System.ComponentModel;using System.Runtime.InteropServices;namespace MyQuery.MyBrowerComVisible(true)public class ExWebBrowser : System.Windows.Forms.WebBrowserprivate SHDocVw.IWebBrowser2 Iwb2;protected override void AttachInterfaces(object nativeActiveXObject)Iwb2 = (SHDocVw.IWebBrowser2)nativeActiveXObject;Iwb2.Silent = true;base.AttachInterfaces(nativeActiveXObject);protected override void DetachInterfaces()Iwb2 = null;base.DetachInterfaces();System.Windows.Forms.AxHost.ConnectionPointCookie cookie;WebBrowserExtendedEvents events;/This method will be called to give you a chance to create your own event sinkprotected override void CreateSink()/MAKE SURE TO CALL THE BASE or the normal events wont firebase.CreateSink();events = new WebBrowserExtendedEvents(this);cookie = new System.Windows.Forms.AxHost.ConnectionPointCookie(this.ActiveXInstance, events, typeof(DWebBrowserEvents2);protected override void DetachSink()if (null != cookie)cookie.Disconnect();cookie = null;base.DetachSink();/This new event will fire when the page is navigatingpublic event EventHandler BeforeNavigate;/ / 可用于替代原来的NewWindow事件,新增了事件的Url参数支持。/ CategoryAttribute(操作), DescriptionAttribute(经过扩展的NewWindow事件,使用继承后的WebBrowserExtendedNavigatingEventArgs类型参数实现Url参数支持)public event EventHandler BeforeNewWindow;protected void OnBeforeNewWindow(string url, out bool cancel)EventHandler h = BeforeNewWindow;WebBrowserExtendedNavigatingEventArgs args = new WebBrowserExtendedNavigatingEventArgs(url, null);if (null != h)h(this, args);cancel = args.Cancel;protected void OnBeforeNavigate(string url, string frame, out bool cancel)EventHandler h = BeforeNavigate;WebBrowserExtendedNavigatingEventArgs args = new WebBrowserExtendedNavigatingEventArgs(url, frame);if (null != h)h(this, args);/Pass the cancellation chosen back out to the eventscancel = args.Cancel;/This class will capture events from the WebBrowserclass WebBrowserExtendedEvents : System.Runtime.InteropServices.StandardOleMarshalObject, DWebBrowserEvents2ExWebBrowser _Browser;public WebBrowserExtendedEvents(ExWebBrowser browser) _Browser = browser; /Implement whichever events you wishpublic void BeforeNavigate2(object pDisp, ref object URL, ref object flags, ref object targetFrameName, ref object postData, ref object headers, ref bool cancel)_Browser.OnBeforeNavigate(string)URL, (string)targetFrameName, out cancel);public void NewWindow3(object pDisp, ref bool cancel, ref object flags, ref object URLContext, ref object URL)_Browser.OnBeforeNewWindow(string)URL, out cancel);System.Runtime.InteropServices.ComImport(), System.Runtime.InteropServices.Guid(34A715A0-6587-11D0-924A-0020AFC7AC4D),System.Runtime.InteropServices.InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIDispatch),System.Runtime.InteropServices.TypeLibType(System.Runtime.InteropServices.TypeLibTypeFlags.FHidden)public interface DWebBrowserEvents2System.Runtime.InteropServices.DispId(250)void BeforeNavigate2(System.Runtime.InteropServices.In,System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.IDispatch) object pDisp,System.Runtime.InteropServices.In ref object URL,System.Runtime.InteropServices.In ref object flags,System.Runtime.InteropServices.In ref object targetFrameName, System.Runtime.InteropServices.In ref object postData,System.Runtime.InteropServices.In ref object headers,System.Runtime.InteropServices.In,System.Runtime.InteropServices.Out ref bool cancel);System.Runtime.InteropServices.DispId(273)void NewWindow3(System.Runtime.InteropServices.In,System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.IDispatch) object pDisp,System.Runtime.InteropServices.In, System.Runtime.InteropServices.Out ref bool cancel,System.Runtime.InteropServices.In ref object flags,System.Runtime.InteropServices.In ref object URLContext,System.Runtime.InteropServices.In ref object URL);public class WebBrowserExtendedNavigatingEventArgs : CancelEventArgsprivate string _Url;public string Urlget return _Url; private string _Frame;public string Frameget return _Frame; public WebBrowserExtendedNavigatingEventArgs(string url, string frame): base()_Url = url;_Frame = frame;二、自己定义的窗体using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Configuration;using MyQuery.MyBrower;using System.IO;using System.Net;using System.Diagnostics;namespace MyQuery.MyIEpublic partial class frmBrower : Formprivate string url = ;private bool isError = false;public frmBrower()InitializeComponent();private void frmBrower_Load(object sender, EventArgs e)this.Text = 加载中.;trytoolStripProgressBar1.Visible = true;this.Enabled = false;exWebBrowser1.AllowWebBrowserDrop = false;exWebBrowser1.WebBrowserShortcutsEnabled = false;exWebBrowser1.ScriptErrorsSuppressed = false;exWebBrowser1.Navigate(url);exWebBrowser1.IsWebBrowserContextMenuEnabled = false;exWebBrowser1.NewWindow += new CancelEventHandler(exWebBrowser1_NewWindow);(SHDocVw.DWebBrowserEvents_Event)exWebBrowser1.ActiveXInstance).NewWindow += BrowserNewWindow;exWebBrowser1.BeforeNewWindow += new EventHandler(exWebBrowser1_BeforeNewWindow);exWebBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(exWebBrowser1_DocumentCompleted);exWebBrowser1.ProgressChanged += new WebBrowserProgressChangedEventHandler(exWebBrowser1_ProgressChanged);while (exWebBrowser1.ReadyState != WebBrowserReadyState.Complete)Application.DoEvents();toolStripProgressBar1.Visible = false;string title = exWebBrowser1.Document.Title;if (title.IndexOf(无法找到资源) = 0 | title.IndexOf(导航已取消) = 0| title.IndexOf(404) = 0 | title.IndexOf(编译错误) = 0| title.IndexOf(错误提示) = 0)MessageBox.Show(连接服务器失败,请检查网络是否正常, 警告, MessageBoxButtons.OK, MessageBoxIcon.Error);isError = true;this.Close();elsethis.Enabled = true;this.Text = title;isError = false;catch (Exception ex)MessageBox.Show(ex.Message, 警告, MessageBoxButtons.OK, MessageBoxIcon.Error);isError = true;this.Close();void exWebBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)Application.DoEvents();if (e.CurrentProgress 0) & (e.MaximumProgress 0)toolStripProgressBar1.Visible = true;else if (exWebBrowser1.ReadyState = WebBrowserReadyState.Complete)toolStripProgressBar1.Visible = false;void exWebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)if (exWebBrowser1.ReadyState WebBrowserReadyState.Interactive)foreach (HtmlElement f in exWebBrowser1.Document.Links)string s = f.GetAttribute(target);if (s != null & s.ToLower() = _blank) f.SetAttribute(target, _self);this.Text = exWebBrowser1.Document.Title;toolStripProgressBar1.Visible = false;void exWebBrowser1_BeforeNewWindow(object sender, EventArgs e)WebBrowserExtendedNavigatingEventArgs eventArgs = e as WebBrowserExtendedNavigatingEventArgs;if (eventArgs.Url.ToLower() != about:blank)exWebBrowser1.Navigate(eventArgs.Url);eventArgs.Cancel = true;void Window_Error(object sender, HtmlElementErrorEventArgs e)e.Handled = true;void exWebBrowser1_NewWindow(object sender, CancelEventArgs e)e.Cancel = true;void BrowserNewWindow(string url, int flag, string target, ref object data,string header, ref bool processed)processed = true;exWebBrowser1.Navigate(url, null, (byte)data, header);private void frmBrower_FormClosed(object sender, FormClosedEventArgs e)exWebBrowser1.Dispose();GC.WaitForPendingFinalizers();GC.Collect();private void frmBrower_FormClosing(object sender, FormClosingEventArgs e)this.Enabled = false;三、C#.NET客户端CS程序 只能启动一次using System;using System.Collections.Generic;using System.Linq;using Syst

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论