问题标签 [msscriptcontrol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# 使用带有字符串的 MSScriptControl AddObject 运行 VBScript 失败
这是我的 C# 程序:
我的 VBScript 文件内容:
最后,当我将 AddObject() 与字符串对象一起使用时,这是我的例外:
System.Runtime.InteropServices.COMException (0x800A0005):在 Program.cs 中的 Srcipting.Program.CallVbsFunction(Object p) 处的 MSScriptControl.IScriptControl.Run(String ProcedureName, Object[]& 参数) 处的过程调用或参数无效
excel - 如何在 Microsoft Script Control 中实现事件?
我在 MSScriptControl 上阅读的所有文档都说它可以响应添加到它的对象的事件。
脚本控件允许您编写在对象上发生事件时自动触发的脚本。 https://msdn.microsoft.com/en-us/library/ms974586.aspx
ScriptControl 将能够接收由使用 AddObject 方法添加的对象生成的事件。 http://flylib.com/books/en/1.492.1.154/1/
但我这样做没有成功。我假设这意味着 ScriptControl 内的代码将在添加的对象引发它的事件时触发。我无法让任何人工作。
寻找将任何对象添加到 ScriptControl 并处理由该控件触发的事件的示例代码。不要关心对象是自定义类、窗体、控件还是内置 Excel 对象(如 Worksheet)。
在 Win Server 2008 64 位上运行 Office 2010 32 位。
对替代方法持开放态度,例如 WSH,但 Tushar Mehta 在这里没有成功http://dailydoseofexcel.com/archives/2009/08/19/using-vbscript-to-monitor-office-eventsor-not/
我已成功将 Excel Application 对象添加到 ScriptControl,并在 Excel Application 对象上执行了代码:
这没问题:
失败:
在这个测试中,m_oScriptCtl 是一个模块范围的变量。当我单击表单时没有任何反应:
下一个在 .AddCode 上报告以下错误:
预期的 ')'
在接下来的测试中,MyClass 被定义为:
但以下报告在 .Run 上“对象不支持属性或方法”。所以在这种情况下,失败的不是事件——我只是无法在类中运行方法。
线索:
有人发帖:
如果您完全无法接收事件,请尝试调用 'ScriptControl1.Modules("Global").CodeObject.Name_Of_Your_Event(ParameterList)' http://computer-programming-forum.com/59-vbscript/4b059f9f6eacfaf0.htm
- 但我不清楚这种解决方法:事件过程不应该被明确地“调用”,它们应该只是触发。TestClassEvent
在上面的示例中,以下几行都给出了“找不到方法或数据成员” :
我没有测试以下内容,因为我不太确定如何:
脚本控件无法处理来自与其在 https://diigo.com/08we68中托管的应用程序相同项目中的类的事件
不确定以下是否相关,不太明白: http: //www.programmersheaven.com/discussion/79452/me-activecontrol-and-events
c# - CodeFluent 与 Interop.MSScriptControl.dll
我们有一个 32 位的服务,我们正在尝试迁移到 64 位。
我们Interop.MSScriptControl.dll
用来评估用户编写的 vb 脚本。
由于没有 64 位版本的MSScriptControl
. 我创建了一个在服务内部调用的进程。每次我们需要评估用户脚本时,我们都会调用该过程。在尝试了这个解决方案后,我发现它真的很慢。
我刚刚发现了CodeFluentRuntimeClient
可以评估 vb 脚本和 JavaScript 的库。但是,它评估脚本的方式与MSScriptControl
库完全不同。
我创建了一个简单的测试程序来评估用户编写的旧 vb 脚本。
如果我这样使用,它工作正常:
像这样它也很好用:
在之前的库中,它会自动检测将要评估的变量的类型。我可以将整数作为字符串传递,它会工作得很好。
如果我使用 ScripEngine 替换字典的值,它将失败:
另外,如果我这样做,我不会得到用户 ADMIN。
顺便说一句,我试图提供尽可能多的细节,这就是问题如此之长的原因。
vbscript - 在 MSScriptControl.ScriptControl 对象中使用 CDO.message.HTMLBody
在 c-ish 语言中,我正在实例化一个 MSScriptControl.ScriptControl 对象并使用 .AddCode 方法运行 VBScript,而后者又实例化了 CDO.Message 对象。
但是,每次我到达
"objMsg.HTMLBody = \"" + email_body + "\" \n"
(注意这是在 c 中,VBScript 将是:
objMsg.HTMLBody = email_body
代码行,我得到一个错误
Microsoft VBScript 编译错误:未终止的字符串常量
c# - 无法捕获 MSScriptControl 的 Eval 函数中引发的自定义异常
这是我的问题的 MVCE。
我有这个方法使用 MSScriptControl 来动态评估一些公式。
这是 Evaluator 类。
这是 CustomException 类:
我预计在这种情况下会抛出 CustomException,并输入第一个 catch 子句。但是,我得到了一个通用消息Exception
(我使用 验证了异常类型GetType().Name
),消息是“不能被零除”。
不过,我确实在 Evaluator 类中收到了以下错误:
XXX.dll 中出现“Library.CustomException”类型的异常,但未在用户代码中处理
如果我像这样修改我的 DoCalculate() ,那么我可以很好地捕获一个 CustomException :
这是否意味着不可能从 Eval 函数内部定义和抛出我自己的异常?
我正在使用 .NET 4.6.2 和 Interop.MSScriptControl 1.0.0.0
c# - 带有参考脚本的 VB 脚本在 ScriptControl c# 中不起作用
您好我正在使用 c# 中的脚本控件执行 VB 脚本。如果它是一个独立的脚本,那么使用下面的代码对我来说效果很好。
但是,当我尝试运行包含其他脚本引用的 VBScript 时,它不会在脚本控件中执行并引发错误。通过以下方式引用脚本中的其他脚本
!INC 本地脚本.Constants-VBScript
有没有办法在脚本控件中添加脚本的引用脚本?
vb.net - VB.NET 用变量计算字符串
我喜欢用不同的公式填充我的数据库。
当我在数据库中有一个公式时,"(2+4)*5"
我得到了结果40
:
当我在数据库中有一个公式时,"(x+4)*5"
我得到了结果20
。x
即使我将值设置为 ,该值也会x
被忽略10
:
这可能吗,还是我需要第三方脚本?
顺便说一句:在 Visual Foxpro 中有一个类似EVAL(db_string)
.
c# - 重新定义一个类或函数
我必须向我们的 C# 应用程序添加一个 VBScript 接口,并使用ScriptControlClass
(MS 脚本引擎)完成此操作。但是,我对 VBS 不太熟悉,也找不到解决方案:
如果我定义了一个类,然后决定对该类进行更改,那么当我第二次运行该类的代码时,我得到了错误:
重新定义名称
例子:
- 定义一个
Class
(例如Class test .... End Class
:) - “编译”(来自 C# 代码,调用
ScriptControlClass.AddCode(code_for_class)
) - 更改类的代码
- 再次“编译” - 在此处出现错误
在尝试编译之前如何“取消定义”类?
另外,我不是在问该类的方法Dim
或对象。Redim
我想修改类代码。
javascript - 64 位 Excel VBA 调用 JavaScript 函数
我需要使用 VBA ScriptControl 对象来调用 JavaScript 函数,但它给了我一个“类未注册”错误。我已经从 Tools->References 添加了 Microsoft Script Control 1.0 我需要调用 JavaScript 以从此Rest API获取 JSON 对象以计算 Excel 宏中的值。
这篇文章告诉我 ScriptControl 仅用于 32 位。我正在使用 64 位 Excel。我也尝试使用此链接中提到的方法,但它不起作用,因为 VBA 无法识别 ActiveXObject
我的 Excel VBA 代码调用一个简单的 JS 函数:
我收到 Set jsObj = CreateObject("MSScriptControl.ScriptControl") 行的类未注册错误是否有另一种方法可以从 VBA 调用 JavaScript 函数?还是我错过了什么?
arrays - 我可以在继承的对象上覆盖 'ComVisible(false) 吗?(vb)
为我在这里可能幼稚的问题道歉,但我被困在一个我似乎遇到的问题上。
目前...
我有一个类,它继承了一个“按钮”控件(特别是 Guna 框架(nuget)的按钮),
这个类被传递给一个数组,然后被传递给一个 Scriptcontrol 类并被添加到一个 VBscript(由 .AddObject 提供)
为了让脚本控件查看对象,我似乎需要将 Comvisible 设置为 true - 我已在程序集信息中设置了它。并尝试在每个班级中声明它。
我可以将对象添加到脚本中,但是,当我尝试对脚本中的对象执行任何操作时,就会出现问题。脚本说“操作在当前状态下是不合法的” 它似乎指向 ComVisible 在依赖类或对象中为假。- 但我可能是错的,我可能是。
如果我删除继承的框架,并继承一个标准的 VS 控件(即 Button),那么脚本就可以正常工作,并且我可以访问脚本中的对象。
我是否能够继承控件并覆盖其 Comvisible 属性/强制它?有没有更好的方法来做到这一点?或者,我可能错误地将对象添加到脚本中?
我正在使用 VS2019 - vb - winforms -.net4.8
提前致谢。