精华内容
下载资源
问答
  • WebBrowser执行脚本和调用外部方法

    千次阅读 2010-01-16 02:29:00
    控制WebBrowser实际上就是控制IE,最简单的...如何执行脚本?以前我一直用mshtml中IHTMLWindow2接口的execScript()方法,在Delphi中需要uses MSHTML单元:procedure TForm1.Button1Click(Sender: TObject); begin Web

     控制WebBrowser实际上就是控制IE,最简单的方法就是执行javascript或vbscript,省去了接口的转换。
    如何执行脚本?以前我一直用mshtml中IHTMLWindow2接口的execScript()方法,在Delphi中需要uses MSHTML单元:

    在CSharp中则需要在工程添加Micrsoft.mshtml,后来得到在地址栏执行脚本的启发。用WebBrowser的Navigate()方法更简单:


    省去了添加引用的麻烦。

    如何调用外部的方法?先看一段在IE中添加收藏夹的代码:

    脚本中window.external对象就是一个外部对象,AddFavorite()则是这个外部对象的方法!
    查了一下资料,原来可以通过IDocHostUIHandler接口的GetExternal()方法,指定脚本的外部对象。
    在CSharp中更简单,有WebBrowser.ObjectForScripting属性直接对应window.external,参考如下代码:

    展开全文
  • WebBrowser执行脚本和调用外部方法。

    万次阅读 2008-10-06 09:54:00
    控制WebBrowser实际上就是控制IE...如何执行脚本?以前我一直用mshtml中IHTMLWindow2接口的execScript()方法,在Delphi中需要uses MSHTML单元:uses MSHTML;procedure TForm1.Button1Click(Sender: TObject);begin 
    控制WebBrowser实际上就是控制IE,最简单的方法就是执行javascript或vbscript,省去了接口的转换。
    如何执行脚本?以前我一直用mshtml中IHTMLWindow2接口的execScript()方法,在Delphi中需要uses MSHTML单元:
    1. uses MSHTML;
    2. procedure TForm1.Button1Click(Sender: TObject);
    3. begin
    4.   (WebBrowser1.Document as IHTMLDocument2).parentWindow.execScript(
    5.     'alert("hello");''javascript')
    6. end;
    在CSharp中则需要在工程添加Micrsoft.mshtml,后来得到在地址栏执行脚本的启发。用WebBrowser的Navigate()方法更简单:
    1. procedure TForm1.Button1Click(Sender: TObject);
    2. begin
    3.   WebBrowser1.Navigate('javascript:alert("hello");')
    4. end;
    省去了添加引用的麻烦。

    如何调用外部的方法?先看一段在IE中添加收藏夹的代码:
    1. window.external.AddFavorite(url, title);
    脚本中window.external对象就是一个外部对象,AddFavorite()则是这个外部对象的方法!
    查了一下资料,原来可以通过IDocHostUIHandler接口的GetExternal()方法,指定脚本的外部对象。
    在CSharp中更简单,有WebBrowser.ObjectForScripting属性直接对应window.external,参考如下代码:
    1. [ComVisible(true)] 
    2. public partial class Form1 : Form
    3. {
    4.     public Form1()
    5.     {
    6.         InitializeComponent();
    7.     }
    8.     private void Form1_Load(object sender, EventArgs e)
    9.     {
    10.         webBrowser1.DocumentText = @"
    11.             <html>
    12.                 <input type=""button"" value=""测试"" οnclick=""alert('Zswang 路过');"">
    13.             </html>
    14.             ";
    15.     }
    16.     public void alertMessage(string s)
    17.     {
    18.         MessageBox.Show(s, "囧");
    19.     }
    20.     private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    21.     {
    22.         webBrowser1.Navigate(@"javascript:
    23.             function alert(str)
    24.             {
    25.                 window.external.alertMessage(str);
    26.             }");
    27.         webBrowser1.ObjectForScripting = this;
    28.     }
    29. }

    展开全文
  • 涵盖了几种常用的 webBrowser执行javascript的方法, execScript方式: NavigateScript方式: 其中需要作如下设置 由于visual studio2005 中WebBrowser控件已经实现了IDocHostUIHandler,所以 只要把应用程序属性类的...
  • 目前很多网站为了防止恶意提交表单信息,大多都采用了加密的方式对提交信息进行处理,...那么我们同样可以利用WebBrowser执行JS脚本,达到加密的目的。 就以移动MM的登录获取验证码为例子,简单描述一下WebBro...

      目前很多网站为了防止恶意提交表单信息,大多都采用了加密的方式对提交信息进行处理,加密处理后通过POST提交给服务器验证,这种操作一般都是用Javascipt进行加密,若是我们想要正确提交表单到网站,就需要对javascipt的加密操作进行模拟。那么我们同样可以利用WebBrowser来执行JS脚本,达到加密的目的。

       就以移动MM的登录获取验证码为例子,简单描述一下WebBrowser执行JS的过程。
    jQuery.ajax({
    url: "/portal/web/SmsRandomSendAction.do",
    dataType: "json",
    type: "POST",
    data: {
    "loginName": strEnc(loginName,"1234567","",""),
    "type": type
    },
    success: function(json){
    if (json.ret == 1) {
    ranpastor.showMessage("两次发送下载短信间隙不能小于1分钟");
    ranpastor.disabled(); //超出限制次数不能再次发送,不能发送
    return;
    }
    if (json.ret == 0) {//确认发送短信秘密成功,可以短输入信秘吗,60秒后可再次发送
    ranpastor.disabled();//失效
    ranpastor.startAutomaticavAilable();//启动自动恢复有效状态
    var message = "验证码已发出,如您"
    message += '<span id="resend_time_count">'+ranpastor.disabledTime+'</span>';
    message +="秒还没有收到,请点击按钮重新获取";
    ranpastor.showMessage(message);
    } else {//发送失败,可重新发送
    var message = json.message || "发送失败!"
    if (json.ret == 5) {
    message = '您今天下发短信密码的次数超过最大短信密码下发次数,请使用最近一次您收到的短信密码,或者使用固定密码方式登录, 如果不记得固定密码, 请使用您的手机发送短信"CZMM"到"10658800",系统会自动为您下发新的固定密码到您手机上,谢谢您的支持!'
    }
    ranpastor.available();
    ranpastor.showMessage(message);
    }
    return false;
    }
    以上代码即为移动MM获取验证码所用的JS代码,我们可以在代码中看到在过程中LoginName被strEnc加密后在提交到网站的。而strEnc是http://mm.10086.cn/moneditor/cs/include/js/common/core/core.js提供的,那么我们只需要执行这个strEnc便能够得到加密后的密文。

    首先,我们先写一个执行strEnc的html方便我们调用。
    <html>
    <head>
    <script type='text/javascript' src='http://mm.10086.cn/moneditor/cs/include/js/common/core/core.js'></script>
    <script type='text/javascript'>
    function getPwd(phoneNum) {
    var result=strEnc(phoneNum,'1234567','','');
    return result; }
    </script>
    </head>
    <body></body>
    </html>

    先将窗口类设置为COM可访问
    [System.Runtime.InteropServices.ComVisibleAttribute(true)]
    public partial class FrmDemo : Form
    然后将之前我们写好的js代码放到WebBrowser里。
     webBrowser1.DocumentText="<html> <head>  <script type='text/javascript' src='http://mm.10086.cn/moneditor/cs/include/js/common/core/core.js'></script>  <script type='text/javascript'> function getPwd(phoneNum)  {   var result=strEnc(phoneNum,'1234567','',''); return result;  } </script> </head> <body> </body> </html>";
       
    到这里,准备工作就已经做完了,接下来就是调用这个js函数的问题了。
     
    在WebBrowser中,我们可以这样调用JS
     
    webBrowser1.Document.InvokeScript("getPwd", new object[] { "18780110000" })
    会返回一个object的值,函数中返回的一定是一个加密后的字符串,将它转换为string就可以了。

    注意一下,不要将调用代码写在Form_Load事件里面。

    Demo Download

    转载于:https://www.cnblogs.com/Dersoul/archive/2011/11/27/2265142.html

    展开全文
  • 在实际应用中我们可能需要WebBrowser控件主动执行我们需要的脚本,执行脚本现在有两种方法。 1、WebBrowser控件加载脚本,简单方便,适用于简短的脚本,无法执行复杂操作。 webBrowser.Navigate("javascript:...

    在实际应用中我们可能需要WebBrowser控件主动执行我们需要的脚本,执行脚本现在有两种方法。

    1、WebBrowser控件加载脚本,简单方便,适用于简短的脚本,无法执行复杂操作。

    webBrowser.Navigate("javascript:editor.areaToFrame();document.getElementById('articlePostBtn').click();");

    相当于你在浏览器地址栏,直接输入脚本来执行。

     

    2、使用微软提供的动态库,也就是Microsoft.mshtml.dll。

    //引入命名空间
    using mshtml;
    
    //获得dom对象
    IHTMLDocument2 Doc2 = (IHTMLDocument2)webBrowser.Document.DomDocument;
    
    //执行脚本
    Doc2.parentWindow.execScript(js, "JavaScript");

    在添加引用时,可能有找不到该程序集的情况,这时,直须百度下载得到。请记住唯一名称“Microsoft.mshtml.dll”。

     

    博主小站,关注IT人养生健康。好人难做网

     

    转载于:https://www.cnblogs.com/archip/p/3902616.html

    展开全文
  • 1。引用C:\WINDOWS\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll Dim win As mshtml.IHTMLWindow2 = CType(webdocin.Document.Window.DomWindow, mshtml.IHTMLWindow2) ...
  • 【实例简介】涵盖了几种常用的 webBrowser执行javascript的方法,详见示例截图以及代码【实例截图】【核心代码】execScript方式:using mshtml;using System;using System.Collections.Generic;using System....
  • <li class="level1 "><a href="#none"><img src="../res/icon/folder.gif"/>订单管理<... WebBrowser1.Document.InvokeScript("freshref", myvalue) 使用的是vs2010 vb 编程
  • 上一文章说明了如何让 js 脚本访问 .NET 中的类, 这次希望给大家说明一下在任意页面中安装jQuery脚本, 并操作页面上的元素. 其实在第一篇关于IEBrowser的文章当中, 已经有了一段jQuery的示例, 但可能由于篇幅原因, ...
  • 上一文章说明了如何让 js 脚本访问 .NET 中的类, 这次希望给大家说明一下在任意页面中安装jQuery脚本, 并操作页面上的元素. 其实在第一篇关于IEBrowser的文章当中, 已经有了一段jQuery的示例, 但可能由于篇幅原因, ...
  • C# webbrowser控件执行js脚本源码

    热门讨论 2009-10-13 18:23:02
    找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵 找了好久才找到的,不容易啊。呵呵
  • function BIdName(sname) {  return document.getElementById(sname).style; } function BClassName(sname) { for (var i=0;i<document.styleSheets.length;i++) { var rules;......
  • 但发现报脚本错误,无论点击“是”或“否”,都无法访问相关功能,导致无法正常访问,而浏览器访问却无此问题。网上百度,说WebBrowser的工作模式并不是本机安装的IE正常模式,而是工作在保护模式,要想工作在本机IE...
  • TWebBrowser平时用得比较多,也收集过大量杂乱无章的技巧。不过东西太多太杂,每到用的时又要重新拼凑一番,实在是太累。于是早就有写一组WebBrowser例程,打算把常用的一些类似...{在WebBrowser执行脚本 用法...
  • 目前很多网站为了防止恶意提交表单信息,大多都采用了加密的方式对提交信息进行处理,加密处理后通过POST提交给服务器验证,这种操作一般都是用... 就以移动MM的登录获取验证码为例子,简单描述一下WebBrowser执行J...
  • 来自:...winform的WebBrowser控件,可以方便的载入页面并执行一些操作,我们可以注入自己的js脚本在页面中执行,方法如下: HtmlElement head = web
  • 使 WebBrowser 更简单的插入、调用执行脚本, 可安装 jQuery 脚本的 C# 开源代码 - IEBrowser Visual Studio 中提供了浏览器控件 WebBrowser, 可以用在 WinForm 中充当一个小型的浏览器.  ...
  • WebBrowser脚本错误的完美解决方案 原文:WebBrowser脚本错误...当我们使用WebBrowser控件时有错误信息框弹出,这样程序显的很不友好,而且会让一些自动执行的程序暂停。我看到有人采取的解决方案是做...
  • 就是说网页里有一些脚本,网页加载完毕会自动执行,但是我想在脚本执行完毕后运行某些程序,该怎么做,有没有一个标志让我指导已经执行脚本
  • webBrowser执行页面中的javascript

    千次阅读 2009-05-01 11:56:00
    webbrowser取得一个页面后,可以执行该页面中的脚本函数,比如可以用HtmlElement.InvokeMember()方法或者HtmlDocument doc = webBrowser1.Document;doc.InvokeScript(jsfun,new object[]...{jsParameter}); 那Java...
  • tmp := 'currID = getNextID(currID)'+#13#10;  Form1.WebBrowser1.OleObject.Document.parentWindow.execScript(tmp,'... 调用函数的方法就是execScript接口,同样,如果函数不存在,或者运行错误也会触发脚本错误异常

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 172
精华内容 68
关键字:

webbrowser执行脚本