我想使用msscript.ocx從C#調用VBScript,並允許VBScript代碼回調C#程序中的函數。從VBScript中回調C#函數使用msscript.ocx運行
例如,在以下VBScript代碼中,Clicktext
是使用msscript.ocx運行VBScript的相同clss中的自定義C#函數。
For i=0 to i=4
Clicktext("Auto")
Next
Clicktext函數應該被調用5次。
有沒有辦法做到這一點?
我想使用msscript.ocx從C#調用VBScript,並允許VBScript代碼回調C#程序中的函數。從VBScript中回調C#函數使用msscript.ocx運行
例如,在以下VBScript代碼中,Clicktext
是使用msscript.ocx運行VBScript的相同clss中的自定義C#函數。
For i=0 to i=4
Clicktext("Auto")
Next
Clicktext函數應該被調用5次。
有沒有辦法做到這一點?
一起Interop.MSScriptControl參考該標記有ComVisible特性控制檯應用程序:
// !! 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
---------------------------
演示如何調用從VBScript代碼一個C#對象的加入到MSScriptControl的方法。
像這樣的東西http://stackoverflow.com/questions/12118077/using-javascript-for-custom-purposes – I4V 2013-05-04 20:12:20