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

 找回密码
 关闭注册

QQ登录

只需一步,快速开始

查看: 10365|回复: 10

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

[复制链接]
君临 发表于 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/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

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

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 0 反对 1

使用道具 举报

老段啦 发表于 2014-10-30 15:10:29 | 显示全部楼层
现在还没啥问题,晚上的好好看看  
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

我是MT 发表于 2014-10-31 04:21:33 | 显示全部楼层
牛逼,高清晰作品,不错。
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

老段啦 发表于 2014-10-31 09:15:27 | 显示全部楼层
讲的太好了
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

lcylcyll 发表于 2014-11-3 02:27:07 | 显示全部楼层
直接调用JS可不可以呢??
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

 楼主| 君临 发表于 2014-11-3 23:30:20 | 显示全部楼层
lcylcyll 发表于 2014-11-3 02:27
直接调用JS可不可以呢??

webbrowser可以.但是winform需要有东西来解释执行
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

inghot 发表于 2014-11-4 09:08:17 | 显示全部楼层
这个搞HTTP这些的很是用得着啊。。能省去好多工作量。。
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

Solo 发表于 2014-11-6 21:40:49 | 显示全部楼层
我来了,晚上开始学习这门课程了。加油~!
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

milest 发表于 2015-2-12 09:50:06 | 显示全部楼层
支持
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 关闭注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

QQ|玄机论坛

GMT+8, 2024-3-29 20:00 , Processed in 0.274009 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表