Loading

WebBrowser开发小知识

//为控件赋值,并模拟点击按钮
HtmlElement txtUser = currentWebBrowser.Document.GetElementById("TPL_username");
HtmlElement txtPwd1 = currentWebBrowser.Document.GetElementById("TPL_password_1");
HtmlElement txtPwd2 = currentWebBrowser.Document.GetElementById("TPL_password_2");
HtmlElement btnSubmit = currentWebBrowser.Document.GetElementById("J_SubmitStatic");
if (txtUser != null && txtPwd1 != null && txtPwd2 != null && btnSubmit != null)
{
    txtUser.SetAttribute("value", "username");
    txtPwd1.SetAttribute("value", "password");
    txtPwd2.SetAttribute("value", "password");
    btnSubmit.Focus();
    btnSubmit.InvokeMember("click");
}

 

//事件在控件上
BindingFlags bflags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;
EventInfo[] events = webBrowser1.GetType().GetEvents(bflags);
EventInfo einfo = events.FirstOrDefault(d => d.DeclaringType.GetField("DocumentCompleted", bflags) != null);
if (einfo != null)
{
    FieldInfo fii = einfo.DeclaringType.GetField("DocumentCompleted", bflags);
    fii.SetValue(webBrowser1, null);
}

 

//事件在基础类上
Type controlType = typeof(System.Windows.Forms.Control);
PropertyInfo propertyInfo = controlType.GetProperty("Events", BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic);
EventHandlerList eventHandlerList = (EventHandlerList)propertyInfo.GetValue(button1, null);
FieldInfo fieldInfo = controlType.GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
Delegate d = eventHandlerList[fieldInfo.GetValue(button1)];
if (d != null)
{
    EventInfo eventInfo = controlType.GetEvent("Click");
    foreach (Delegate dx in d.GetInvocationList())
    {
        eventInfo.RemoveEventHandler(button1, dx);
    }
}

 

拖动WebBrowser滚动条的方式

//方法一 mshtml.HTMLDocument dom = currentWebBrowser.Document.DomDocument as mshtml.HTMLDocument; dom.body.style.overflow = "hidden"; //dom.documentElement.setAttribute("scrollLeft", 780); dom.documentElement.setAttribute("scrollTop", 220);

 

//方法一 //mshtml.HTMLDocument dom = webBrowser1.Document.DomDocument as mshtml.HTMLDocument; //dom.parentWindow.scrollBy(150, 150);

//方法二

//HtmlDocument objDoc = webBrowser1.Document; //objDoc.Window.ScrollTo(new System.Drawing.Point(5000, webBrowser1.Document.Body.ScrollRectangle.Height));

//方法三

声明

[DllImport("user32.dll", EntryPoint = "GetScrollPos")] public static extern int GetScrollPos(IntPtr hwnd, int nBar);

[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetScrollPos")] public static extern int SetScrollPos(IntPtr hWnd,int nBar,int nPos,bool bRedraw);

使用: //SetScrollPos(this.webBrowser1.Handle, 150, 150, true);

//方法四

scrollViewer1.ScrollToHorizontalOffset(scrollViewer1.ScrollableWidth);

 

//System.Windows.Forms.WebBrowser 注册一段JS代码,创建一个DIV遮罩层。
            HtmlElement head = currentWebBrowser.Document.GetElementsByTagName("head")[0];
            HtmlElement scriptTag = currentWebBrowser.Document.CreateElement("script");
            mshtml.IHTMLScriptElement scriptElement = (mshtml.IHTMLScriptElement)scriptTag.DomElement;
            scriptElement.text = @"function MoveLoginSection()
                                    {
                                        var elem = document.getElementById('J_StaticForm');
                                        elem.style.backgroundColor='#ffffff';
                                        elem.style.position = 'absolute';
                                        elem.style.left = '-789px';
                                        elem.style.top = '-119px'; 
                                        elem.style.zIndex = 10001;
                                    }; ";
            head.AppendChild(scriptTag);
            currentWebBrowser.Document.InvokeScript("MoveLoginSection");

 

注册一段js代码:

 var htmlDoc = (IHTMLDocument3)webBrowser1.Document.DomDocument;
 HTMLHeadElement head = htmlDoc.getElementsByTagName("head").Cast<HTMLHeadElement>().First();
 var script = (IHTMLScriptElement)((IHTMLDocument2)htmlDoc).createElement("script");
 script.text = "window.onunload=function() {}";
 head.appendChild((IHTMLDOMNode)script);

 webBrowser1.Navigate("http://bbs.csdn.net");

 

posted @ 2016-03-05 17:00  Sam Xiao  阅读(425)  评论(0)    收藏  举报