监控 WebBrowser 控件内容的改变
生活随笔
收集整理的這篇文章主要介紹了
监控 WebBrowser 控件内容的改变
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天的收獲只有一項,那就是這個啦。。。
呵呵, 主要的就是用到mshtml.IHTMLChangeSink 中的 Notify方法觸發自定義的事件,具體的代碼我也不懂,嘿嘿 這些都是從 東西市 Copy 來的,亂的成粥了。
public class Monitor : mshtml.IHTMLChangeSink
{
// for monitor htmleditor textchanged
private Guid IMarkupContainer2GUID = typeof(mshtml.IMarkupContainer2).GUID;
private uint cookie = 0;
private mshtml.IMarkupContainer2 markupContainer;
private WebBrowser webBrowser;
// Event
public event Action HtmlEditorEvent;
public Monitor(WebBrowser webControl)
{
this.webBrowser= webControl;
}
#region For HtmlEditor TextChanged
// always monitor
private mshtml.IMarkupContainer2 GetMarkupContainer()
{
object oDocument = this.webBrowser.Document.DomDocument;
IntPtr pDocument = Marshal.GetIUnknownForObject(oDocument);
IntPtr pMarkupContainer = IntPtr.Zero;
// pMarkupContainer is different after a call to Navigate or designMode
Marshal.QueryInterface(pDocument, ref IMarkupContainer2GUID, out pMarkupContainer);
//object oMarkupContainer = Marshal.GetObjectForIUnknown(pMarkupContainer); // This does not work
object oMarkupContainer = Marshal.GetUniqueObjectForIUnknown(pMarkupContainer);
Marshal.Release(pDocument);
Marshal.Release(pMarkupContainer);
return (mshtml.IMarkupContainer2)oMarkupContainer;
}
// only one monitor
private mshtml.IMarkupContainer2 GetMarkupContainer2()
{
return (mshtml.IMarkupContainer2)this.webBrowser.Document.DomDocument;
}
public void MonitorTextChangedAlways()
{
this.markupContainer = GetMarkupContainer();
this.markupContainer.RegisterForDirtyRange((mshtml.IHTMLChangeSink)this, out this.cookie);
}
public void StopMonitorTextChanged()
{
if (this.markupContainer != null)
{
this.markupContainer.UnRegisterForDirtyRange(this.cookie);
}
}
#endregion
#region Implement Interface
public void Notify()
{
//觸發改變事件外界去接受
if (this.HtmlEditorEvent != null)
{
this.HtmlEditorEvent();
}
}
#endregion
}
轉載于:https://www.cnblogs.com/08shiyan/archive/2011/02/18/1957995.html
總結
以上是生活随笔為你收集整理的监控 WebBrowser 控件内容的改变的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript删除元素节点
- 下一篇: deb包安装命令