用MSScriptControl 在 C# winform中执行 javascript js代码并实现传递参数

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

在C#中,我们也可以通过Com组件来执行一段javascript代码。

下面的代码展示了如何用MSScriptControl 组件执行一段数学表达式:

   MSScriptControl.ScriptControlClass sc = new MSScriptControl.ScriptControlClass();
   sc.Language = "javascript";
   object obj = sc.Eval(" 1 + 2 * (3 + 4)");
   Console.WriteLine(obj);


要使用MSScriptControl需要引用com组件 Microsoft Script Control 1.0。

还有一种方法:

// csc.exe noname1.cs /r:C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Microsoft.JScript.dll

//注:需加入Microsoft.JScript与Microsoft.Vsa两个命名空间。

public class Class1

{

    static void Main(string[] args)

    {

        System.Console.WriteLine("Hello World");

        string Expression = "var result:int =0;result==1?\"成功\":\"失败\"";

        Microsoft.JScript.Vsa.VsaEngine ve = Microsoft.JScript.Vsa.VsaEngine.CreateEngine();

        Console.WriteLine(Microsoft.JScript.Eval.JScriptEvaluate(Expression, ve));

    }

}

据说第二种不能传递参数,所以使用了第一种方案调用discuz的MD5.js实现密码加密,代码如下

public class ForumEncript
    {
        public static string Encript(string fileName, string functionName, object[] pams)
        {
            StreamReader reader = new StreamReader(Environment.CurrentDirectory + @"\Script\" + fileName);
            string scriptCode = reader.ReadToEnd();
            ScriptControlClass sc = new ScriptControlClass();
            sc.Language = "javascript";
            sc.AddCode(scriptCode);
            object obj = sc.Run(functionName, ref pams);
            return obj.ToString();
        }
    }



【VBA研究】64位系统下无法用ScriptControl控件解析JSon数据 作者:iamlaosong 我原来一个查邮件轨迹的工具,最近有人反映说是无法使用,我自己试了下发现没有问题。看他们发来的截图,发现数据查询没有问题,只是对结果解析的时候,没有分离出相关的字段内容。研究了一下发现,我们的差别是使用环境不同,他们用的是64位win10,我用的是32位win7(很土吧),调试发现,ScriptControl控件在64位系统下,无法解析JSon数据。也就是说,32位系统下的代码,在64位系统下失效了。 网上找了一下,发现有64位系统下使用ScriptControl控件的方法 阅读详情

相关推荐

WinForm程序执行JS代码的多种方法以及使用WebBrowser与JS交互

方法一 使用微软官方组件Interop.MSScriptControl 1.msscript.ocx下载的地址   http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=D05FCF37-4D9F-4769-9442-0BCEEF907033    或者点击此处下载 Interop

在劫や草根 6194

.NET程序集引用COM组件MSScriptControl遇到问题的解决方法

问题描述:为了在C#执行js脚本,在一个目标平台编译为Any Cpu的.NET程序集中引用了MSScriptControl组件,在winform程序中,调用这个程序集中的执行js的方法,没有任何问题。但是在windows服务中调用却报错,报错信息如下: 在尝试过很多方法之后仍然没有解决,包括将MSScriptControl组件的引用属性“嵌入互操作类型”设置为false,如图所示: 这样子修改之后,报另外一个错误: 解决方案:MSScriptControl组件是32位的,所以需要将程序集的目标平台设置为X86平台,才能使用。设置如图:

c#执行脚本语言(vbscript)

1.参考来自链接https://www.xuebuyuan.com/513011.html与https://bbs.csdn.net/topics/380229790 这个库文件Interop.MSScriptControl.dll我硬是在我的电脑中没找到,网络上也搜索了,有下载链接,但还是没下载, 有知道出处的可以给我留个言,了解下. 2.后参照了这两个链接https://blog...

dd_zhouqian的专栏 4972

MSScriptControl.ScriptControl组件属性、方法、事件介绍

主要介绍了MSScriptControl.ScriptControl组件属性、方法、事件介绍,需要的朋友可以参考下

JS中调用本地Winform程序传递参数

场景 JS中调用本地exe程序: JS中调用本地exe程序_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在上面的基础上怎样在js中调用本地winform程序传递参数。 注: 博客:BADAO_LIUMANG_QIZHI的博客_霸道流氓气质_CSDN博客-C#,架构之路,SpringBoot领域博主 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 1、新建或者修改上面的myprotocol.reg注册表文件,在shell\open\comma

BADAO_LIUMANG_QIZHI的博客 3627

C#MSScriptControl.ScriptControl组件用法示例

MSScriptControl.ScriptControlC#语言提供的一个COM组件,用来与脚本语言交互执行,支持JScript、VBScript、javascript语言。工作需要设计一个插件交互库,需要从C#语言转移执行主体到JS代码获取JS代码返回值给C#语言。本篇博文在于演示的用法,详细的MSScriptControl.ScriptControl属性及方法介绍可以参考另一篇博文:h...

DXCyber409的博客 1万+

WinForm执行JS代码(多种方法)

方法一 使用微软官方组件Interop.MSScriptControl 1.msscript.ocx下载的地址http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=D05FCF37-4D9F-4769-9442-0BCEEF907033 或者点击此处下载 Interop.M...

weixin_30421809的博客 491

C#使用技巧之调用JS脚本方法一

有时候我们需要在C#中直接调用js方法,这是完全没问题的。当然,我们也可以把js代码转化为C#,然后在C#执行,但是这个就得花时间了~~下面我给大家介绍下一种直接在C#中调用JS文件的方法。 0、贴

CHCH998的博客 8244

C#使用技巧之调用JS脚本(转)

1、创建个Winform项目。 2、在From1上增加一个文本框一个按钮。 3、在解决方案中创建一个test.js文件。 test.js代码如下: function sayHello(str) { return "Hello," + str; } 4、进入Form1.cs编码后台代码。 private void button1_Click(object sender, Event...

weixin_34059951的博客 490

MSScriptControl.ScriptControl组件的用法实例

主要介绍了MSScriptControl.ScriptControl组件的用法实例,需要的朋友可以参考下

番外篇 之 JS调用

C#Winform调用JS 执行JSJavascript)方法 课前知识储备: 1,JS代码放置的位置。 方法一: 使用微软官方组件Interop.MSScriptControl ScriptContr...

weixin_30709809的博客 138

c# .NET程序集引用COM组件MSScriptControl遇到问题的解决方法 windows 服务

问题描述:为了在C#执行js脚本,在一个目标平台编译为Any Cpu的.NET程序集中引用了MSScriptControl组件,在winform程序中,调用这个程序集中的执行js的方法,没有任何问题。以上方法虽然还有有一个小的问题就是可以保证了服务的正常启动。同时还需要你启动服务的方式也必须是。解决方案:MSScriptControl组件是32位的,所以需要将程序集的目标平台设置为X86平台,才能使用。...

weixin_45740873的博客 824

JavaScript代码无分号问题

JavaScript中有时候是可以不写分号的,但是再采用无分号格式时要注意 注意: 当你采用了无分号的代码风格的时候,只需要注意以下情况就不会有上面的问题了: 当一行代码是以: ( [ ` 开头的时候,则在前面补上一个分号用以避免一些语法解析错误。 所以你会发现在一些第三方的代码中能看到一上来就以一个;开头。 结论: 无论你的代码是否有分号,都建议如果一行代码是以( [ `开头的,则最好都在其前面补上一个分号。 案例: // 1.( function say()

流楚丶格念的博客 4342

C#中使用MSScriptControl执行 javascript代码

一、使用方法 javascript 中有个eval方法,用过的人都知道他的方便和强大之处。 在C#中,我们也可以通过Com组件来执行一段javascript代码。 下面的代码展示了如何用MSScriptControl 组件执行一段数学表达式: MSScriptControl.ScriptControlClass sc = new MSScriptControl.ScriptControlC

PHP_前端_ios软件制件_概念西瓜专栏 3848

引用MSScriptControl.ScriptControl 在服务器上运行报错 字符转换公式

报错问题:   Retrieving the COM class factory for component with CLSID {0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC} failed due to the following error: 80040154 没有注册类 (Exception from HRESULT: 0x80040154 (REGDB_E_

zhongyuhuan1的专栏 4740

VBScript 语法-函数(ScriptControl 控件)

13. VBScript 语法-函数(ScriptControl 控件) 引用名称:Microsoft Script Control对象浏览器的名称:MSScriptControl VBScript 即 VBS 脚本语言。其语法与函数与 VB 非常接近。VBScript 在 VB6 中就是 VBScript ScriptControl 对象。通过两种方法可以使用该对象:1.勾选引用中...

demonzsmj12315的博客 934
上一篇: windows搜索包含文字的文件,.php文件里包含的内容其搜不到?
下一篇: 如何关闭80端口,如何查找哪些端口在使用中
blacksource
博客等级 码龄20年 66粉丝 23原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值