使用msscript.ocx从VBScript运行中回调C#函数

使用msscript.ocx从VBScript运行中回调C#函数,c#,vbscript,controls,msscriptcontrol,C#,Vbscript,Controls,Msscriptcontrol,我想使用msscript.ocx从C#调用VBScript,并允许VBScript代码回调C#程序中的函数 例如,在下面的VBScript代码中,Clicktext是使用msscript.ocx运行VBScript的同一CLSS中的自定义C#函数 For i=0 to i=4 Clicktext("Auto") Next Clicktext函数应该被调用5次 有办法吗?此ComVisible控制台应用程序引用Interop.MSScriptControl: // !! http:/

我想使用msscript.ocx从C#调用VBScript,并允许VBScript代码回调C#程序中的函数

例如,在下面的VBScript代码中,
Clicktext
是使用msscript.ocx运行VBScript的同一CLSS中的自定义C#函数

For i=0 to i=4

    Clicktext("Auto")

Next
Clicktext函数应该被调用5次


有办法吗?

此ComVisible控制台应用程序引用Interop.MSScriptControl:

// !! http://sandsprite.com/blogs/index.php?uid=11&pid=83

using System;
using MSScriptControl;

//class test has to support IDispatch to AddObject(). So make the assembly ComVisible
//via AssemblyInfo.cs or [assembly: System.Runtime.InteropServices.ComVisible(true)]

namespace MsScTest {
    public class CsHelper {
        public int increment(int y) { return ++y; }
    }

    class Program {
        public static MSScriptControl.ScriptControl sc = new ScriptControl();
        static void Main(string[] args) {
            sc.Language = "VBScript";
            sc.AddObject("CsHelper", new CsHelper(), true);
            sc.AddCode(@"
Function inc(n)
  inc = CsHelper.increment(n)
End Function
MsgBox inc(4711), 0, 'With a little help from my friend CsHelper'
".Replace("'", "\""));
            return;
        }
    }
}
布丁:

---------------------------
With a little help from my friend CsHelper
---------------------------
4712
---------------------------
OK   
---------------------------

演示如何从添加到MSScript控件的VBScript代码中调用C#对象的方法。

类似的内容非常感谢Horner!!您提供的解决方案为我工作。@ JaskAN如果解决方案有效,请考虑+1,并将答案标记为正确。只有一个大注意事项:将派生类作为脚本对象添加可能会成为主要的错误。我正在添加从表单派生的类。该类上的方法从未被调用。我一删除“:Form”代码就开始工作了。PS:上面的代码帮助我找到了这个问题,所以+1;)