C#论坛-玄机论坛-C#论坛-玄机宝盒-玄机类库-C#

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2616|回复: 10

[番外系列] 玄机论坛C#培训课程-番外篇之C#Winform调用JS

[复制链接]
  • TA的每日心情
    慵懒
    2017-12-22 10:34
  • 签到天数: 82 天

    [LV.6]【武林翘楚】

    君临 发表于 2014-10-29 23:36:58 | 显示全部楼层 |阅读模式

    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    如有疑问,请加入官方群询问

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    番外篇之Js调用玄机网番外篇之C#Winform调用JS
    执行JSJavascript)方法
             课前知识储备:
                                                   1JS代码放置的位置。
             方法一: 使用微软官方组件Interop.MSScriptControl
                ScriptControlClass sc = new ScriptControlClass();//申明变量
               sc.UseSafeSubset = true; //允许执行不安全的代码
               sc.Language = "JScript"; //VBScript
               sc.AddCode(Properties.Resources.GetTimes);// Properties.Resources 资源文件
                                   要执行的方法名,执行的参数/如果无参那么就写方法名
               string str = sc.Run("time", newobject[] { "time()"}).ToString();
    //特别注意
    JS方法中无参数时,这时传递的为该方法名称.
    弊端:
                  必须携带DLL.
                  不支持x64 .
    区别:    方法一需要DLL,方法二反射的方法是不需要DLL的.
    方法一不支持X64,方法二支持.
    方法二在需要参数是字符串时,必须要使用 ”’”引号包起来.方法一则不用
    方法二:  利用反射获取组件
           /// <summary>
            /// 获取JS时间戳 13
            /// </summary>
            /// <returns></returns>
            public stringGetTimeByJs()
            {
               Type obj = Type.GetTypeFromProgID("ScriptControl");
               if (obj == null)return null;
               object ScriptControl = Activator.CreateInstance(obj);
               obj.InvokeMember("Language",BindingFlags.SetProperty, null, ScriptControl, newobject[] { "JScript"});
               string js = "functiontime(){return new Date().getTime()}";
               obj.InvokeMember("AddCode",BindingFlags.InvokeMethod, null, ScriptControl, newobject[] { js });
               return obj.InvokeMember("Eval", BindingFlags.InvokeMethod,null, ScriptControl, newobject[] { "time()"}).ToString();
            }


    不得不说的方法:
               在环境变量里面-系统变量-path-点编辑,在末尾添加";.netframework(注意编译版本)绝对路径"注意前面还有个分号,系统变量中不能有中文,空格..O了.直接cmd jec 调用编译就可以了. 例如:"jsc /t:library xxx.js"

    如遇到以下错误
    QQ图片20160630162729.png
    解决方案:
    项目的引用中 , 选择 Interop.MSScriptControl  右键 属性 菜单
    1.png

    嵌入互操作类型  设置为  false

    2.png
    玄机网 C#Winform调用JS详解
    视频下载地址   http://pan.baidu.com/s/1gdAFesb

    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thread-1218-1-1.html
    如果失效请联系站长重新分享
    回复

    使用道具 举报

    该用户从未签到

    老段啦 发表于 2014-10-31 09:22:10 | 显示全部楼层
    今天看COM对象的封装  很多都问题迎刃而解
    玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thread-1218-1-1.html
    如果失效请联系站长重新分享
    慵我是MTacing="0" cellpadding="0">
    2
    君临 当前离线
    积分
  • 慵我是MTacinsdn5.com/uc_server/avat12.php?uid=6&size=middle" 4:21:33/div>

    该用户从未签到

    12.pv>
    今天看COM对象的封装  很多都问题迎刃而解
    12.pv>lass="sign">玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thre> 12"xi2"-1.html
    如果失效请联系站长重新分享
    12"xi2"td>
    + ' 人 12stre" href="forum.php?mod + ' 人 12stre" href="fHTML ? $('review_support_1021').innerHTML : 0) + ' 人 12.pv>e=1" onclican id="review_support_1021">0 反对 1

    使用道具

    <13_me
    ct" v>
    今天看COM对象的封装  很多都问题迎刃而解
    ct" v>lass="sign">玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thre> 20"xi2"-1.html
    如果失效请联系站长重新分享
    20"xi2"td>
    + ' 人 0stre" href="forum.php?mod + ' 人 0stre" href="fHTML ? $('review_support_1021').innerHTML : 0) + ' 人 0.pv>e=1" onclican id="review_support_1021">0 反对 1

    使用道具

    87mpv>
    今天看COM对象的封装  很多都问题迎刃而解
    87mpv>lass="sign">玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thre> 87"xi2"-1.html
    如果失效请联系站长重新分享
    87"xi2"td>
    + ' 人 87stre" href="forum.php?mod + ' 人 87stre" href="fHTML ? $('review_support_1021').innerHTML : 0) + ' 人 87mpv>e=1" onclican id="review_support_1021">0 反对 1

    使用道具

    11astrong>君临 当前离线
    积分
    查看详细资料
  • <13_me

    该用户从未签到

  • 该用户从未签到

    13_mpv>
    今天看COM对象的封装  很多都问题迎刃而解
    13_mpv>lass="sign">玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
    帖子内网盘失效后请使用下面地址

    http://bbs.msdn5.com/thre>13_"xi2"-1.html
    如果失效请联系站长重新分享
    13_"xi2"td>
    回复
    15astrong>君临 当前离线
    积分
  • <149me
  • 49"xi2"ng>君临 当前离线
    积分