写了个WebBrowserHelper,先留着

class WebBrowserHelper
    {
        /// <summary>
        /// 设置HTML控件显示文本,根据控件NAME值
        /// </summary>
        /// <param name="webBrowser">WebBrowser对象</param>
        /// <param name="strtype">控件类型</param>
        /// <param name="strname">控件NAME值</param>
        /// <param name="strvalue">控件显示文本</param>
        public void SetCtlValueByName(WebBrowser webBrowser, string strtype, string strname, string strvalue)
        {
            HtmlElementCollection elemlist = webBrowser.Document.GetElementsByTagName(strtype);
            foreach (HtmlElement elem in elemlist)
            {
                if (elem.GetAttribute("name").ToString() == strname)
                {
                    elem.SetAttribute("value", strvalue);
                }
            }
        }
        /// <summary>
        /// 设置多个HTML控件显示文本,根据控件NAME值
        /// </summary>
        /// <param name="webBrowser">WebBrowser对象</param>
        /// <param name="strtype">控件类型</param>
        /// <param name="arrname">arrname[]控件name,arrname[][]控件显示文本</param>
        public void SetCtlValueByListName(System.Windows.Forms.WebBrowser webBrowser, string strtype, string[][] arrname)
        {

            HtmlElementCollection elemlist = webBrowser.Document.GetElementsByTagName(strtype);
            for (int i = 0; i < arrname[0].Length; i++)
            {
                foreach (HtmlElement elem in elemlist)
                {
                    if (elem.GetAttribute("name").ToString() == arrname[i][0])
                    {
                        elem.SetAttribute("value", arrname[i][1]);
                    }
                }
            }

        }
        /// <summary>
        /// 设置多个HTML控件显示文本,根据控件ID值
        /// </summary>
        /// <param name="webBrowser">WebBrowser对象</param>
        /// <param name="strtype">控件类型</param>
        /// <param name="arrid">arrname[]控件id,arrname[][]控件显示文本</param>
        public void SetCtlValueByListID(System.Windows.Forms.WebBrowser webBrowser, string strtype, string[][] arrid)
        {
            HtmlElementCollection elemlist = webBrowser.Document.GetElementsByTagName(strtype);
            for (int i = 0; i < arrid.Length; i++)
            {
                foreach (HtmlElement elem in elemlist)
                {
                    if (elem.GetAttribute("id").ToString() == arrid[i][0])
                    {
                        elem.SetAttribute("value", arrid[i][1]);
                    }
                }
            }

        }
        /// <summary>
        /// 设置HTML控件显示文本,根据空间ID值
        /// </summary>
        /// <param name="webBrowser">WebBrowser对象</param>
        /// <param name="strtype">控件类型</param>
        /// <param name="strid">控件ID值</param>
        /// <param name="strvalue">控件显示文本</param>
        public void SetCtlValueById(System.Windows.Forms.WebBrowser webBrowser, string strtype, string strid, string strvalue)
        {
            HtmlElementCollection elemlist = webBrowser.Document.GetElementsByTagName(strtype);
            foreach (HtmlElement elem in elemlist)
            {
                if (elem.GetAttribute("id").ToString() == strid)
                {
                    elem.SetAttribute("value", strvalue);
                }
            }
        }
        /// <summary>
        /// 激发HTML事件,根据空间ID值
        /// </summary>
        /// <param name="webBrowser">WebBrowser对象</param>
        /// <param name="strtype">控件类型</param>
        /// <param name="strid">控件ID值</param>
        /// <param name="exname">控件事件名称</param>
        public void TriggerById(System.Windows.Forms.WebBrowser webBrowser, string strtype, string strid, string exname)
        {
            HtmlElementCollection elemlist = webBrowser.Document.GetElementsByTagName(strtype);
            foreach (HtmlElement elem in elemlist)
            {

                if (elem.GetAttribute("id").ToString() == strid)
                {
                    elem.InvokeMember(exname);
                }
            }
        }
        /// <summary>
        /// 激发HTML事件,根据空间NAME值
        /// </summary>
        /// <param name="webBrowser">WebBrowser对象</param>
        /// <param name="strtype">控件类型</param>
        /// <param name="strname">控件NAME值</param>
        /// <param name="exname">控件事件名称</param>
        public void TriggerByName(System.Windows.Forms.WebBrowser webBrowser, string strtype, string strid, string exname)
        {
            HtmlElementCollection elemlist = webBrowser.Document.GetElementsByTagName(strtype);
            foreach (HtmlElement elem in elemlist)
            {
                if (elem.GetAttribute("name").ToString() == strid)
                {
                    elem.InvokeMember(exname);
                }
            }
        }
        /// <summary>
        /// 执行当前HTML页中用脚本语言定义的函数
        /// </summary>
        /// <param name="webBrowser">WebBrowser对象</param>
        /// <param name="strtype">控件类型</param>
        /// <param name="strSrc">控件NAME值</param>
        /// <param name="exname">控件事件名称</param>
        public void ExecSrciptByName(System.Windows.Forms.WebBrowser webBrowser, string strtype, string strSrc, string exname)
        {
            HtmlElementCollection elemlist = webBrowser.Document.GetElementsByTagName(strtype);
            foreach (HtmlElement elem in elemlist)
            {
                elem.InvokeMember(exname);
            }
        }
        /// <summary>
        /// 设置HTML控件的属性,针对radiobutton和checkbox
        /// </summary>
        /// <param name="webBrowser">WebBrowser对象</param>
        /// <param name="strtype">控件类型</param>
        /// <param name="strname">控件id</param>
        /// <param name="ischeck">true为选中,false为勾掉</param>
        public void SetAttributeByID(System.Windows.Forms.WebBrowser webBrowser, string strtype, string strname, bool ischeck)
        {
            HtmlElementCollection elemlist = webBrowser.Document.GetElementsByTagName(strtype);
            foreach (HtmlElement elem in elemlist)
            {
                if (elem.GetAttribute("id").ToString() == strname)
                {
                    elem.SetAttribute("checked", ischeck.ToString());
                }
            }
        }
        /// <summary>
        /// 在当前HTML页中选中Select中与定义的索引值相同的项
        /// </summary>
        /// <param name="web">WebBrowser对象</param>
        /// <param name="strtype">控件类型</param>
        /// <param name="strid">控件NAME值</param>
        /// <param name="strvalue">要选中的索引值</param>
        public void WebSelect(System.Windows.Forms.WebBrowser web, string strtype, string strid, string strvalue)
        {
            HtmlElementCollection elemlist = web.Document.GetElementsByTagName(strtype);
            foreach (HtmlElement elem in elemlist)
            {
                if (elem.GetAttribute("name").ToString() == strid)
                {
                    elem.SetAttribute("SelectedIndex", strvalue);
                }
            }
        }
        /// <summary>
        /// 在当前HTML页中选中Select中与定义的索引值相同的项
        /// </summary>
        /// <param name="web">WebBrowser对象</param>
        /// <param name="strtype">控件类型</param>
        /// <param name="strid">控件NAME值</param>
        /// <param name="strvalue">没用的</param>
        public void WebSelectheck(System.Windows.Forms.WebBrowser web, string strtype, string strid, string strvalue)
        {
            HtmlElementCollection elemlist = web.Document.GetElementsByTagName(strtype);
            foreach (HtmlElement elem in elemlist)
            {
                if (elem.GetAttribute("name").ToString() == strid)
                {
                    elem.SetAttribute("Options[22]", "selected");
                }
            }
        }

        /// <summary>
        /// 获取用户选中的内容
        /// Winform程序 2.0的. 需要引用Microsoft.mshtml.
        /// </summary>
        /// <param name="webBrowser"></param>
        /// <returns></returns>
        public string GetSelectText(System.Windows.Forms.WebBrowser webBrowser)
        {
            IHTMLDocument2 htmlDocument = webBrowser.Document.DomDocument as IHTMLDocument2;
            IHTMLSelectionObject currentSelection = htmlDocument.selection;
            string result = string.Empty;
            if (currentSelection != null)
            {
                IHTMLTxtRange range = currentSelection.createRange() as IHTMLTxtRange;
                if (range != null)
                {
                    result = range.text;
                }
            }
            return result;
        }

        /// <summary>
        /// 获取用户选中部分和html代码
        /// Winform程序 2.0的. 需要引用Microsoft.mshtml.
        /// </summary>
        /// <param name="webBrowser"></param>
        /// <returns></returns>
        public string GetSelectHtml(System.Windows.Forms.WebBrowser webBrowser)
        {
            IHTMLDocument2 htmlDocument = webBrowser.Document.DomDocument as IHTMLDocument2;
            IHTMLSelectionObject currentSelection = htmlDocument.selection;           
            string result = string.Empty;
            if (currentSelection != null)
            {
                IHTMLTxtRange range = currentSelection.createRange() as IHTMLTxtRange;
                if (range != null)
                {
                    result = range.htmlText;
                }
            }
            return result;
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BHO(Browser Helper Object,浏览器辅助对象,简称BHO)   BHO是微软推出的作为浏览器对第三方程序员开放交互接口的业界标准,通过简单的代码就可以进入浏览器领域的“交互接口”(INTERACTIVED Interface)。通过这个接口,程序员可以编代码获取浏览器的行为,比如“后退”、“前进”、“当前页面”等,利用BHO的交互特性,程序员还可以用代码控制浏览器行为,比如修改替换浏览器工具栏,添加自己的程序按钮等。这些在系统看来都是没有问题的。BHO原来的目的是为了更好的帮助程序员打造个性化浏览器,以及为程序提供更简洁的交互功能,现在很多IE个性化工具就是利用BHO的来实现。 编辑本段 技术优势   “浏览器劫持”是一种不同于普通病毒木马感染途径的网络攻击手段,而是使用各种技术(如DLL插件等)插件对用户的浏览器进行篡改。安装后,它们会成为浏览器的一部分,可以直接控制浏览器进行指定的操作,根据需要,可以让你打开指定的网站,甚至是收集你系统中的各种私密信息。最可怕的是只有当浏览器已经被劫持了,你才会发现,反应过来,原来电脑已经出现了问题。比如IE主页被改,开机就会弹出广告等等。目前,浏览器劫持已经成为Internet用户最大的威胁之一。其实“浏览器劫持”就是通过BHO的技术手段进入你的系统的,而这种技术是合法的。   从某种观点看,Internet Explorer同普通的Win32程序没有什么两样。借助于BHO,你可以一个进程内COM对象,这个对象在每次启动时都要加载。这样的对象会在与浏览器相同的上下文中运行,并能对可用的窗口和模块执行任何行动。例如,一个BHO能够探测到典型的事件,如GoBack、GoForward、DocumentComplete等;另外BHO能够存取浏览器的菜单与工具栏并能做出修改,还能够产生新窗口来显示当前网页的一些额外信息,还能够安装钩子以监控一些消息和动作。 编辑本段 注册表位置   BHO在注册表中的位置是:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects,有兴趣的朋友可以在这里做做实验。不过一定要记住你更改的每一步,否则会出错的哦!   BHO对象依托于浏览器主窗口。实际上,这意味着一旦一个浏览器窗口产生,一个新的BHO对象实例就要生成。任何 BHO对象与浏览器实例的生命周期是一致的。其次, BHO仅存在于Internet Explorer 4.0及以后版本中。   如果你在使用Microsoft Windows? 98, Windows 2000, Windows 95, or Windows NT版本4.0 操作系统的话,也就一块运行了活动桌面外壳4.71,BHO也被 Windows资源管理器所支持。 BHO是一个COM进程内服务,注册于注册表中某一键下。在启动时,Internet Explorer查询那个键并把该键下的所有对象预以加载。   迅雷中TDAtOnce_Now.dll和xunleiBHO_Now.dll为安全   如何发现BHO里面的危险模块.   首先有一个能够查看进程的软件 冰刃就不错 下面以它为例:   先打开冰刃—会看到一个BHO在这里就可以看到危险BHO进程了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值