访问C#.NET环境中的VB脚本对象(获取或设置值)

时间:2011-07-13 19:10:42

标签: c# .net vbscript

我们有一个公司应用程序可以自动执行某些任务(实际上并不重要)。在我们的软件中,我们无法根据自己的命令构建脚本,也能够在同一环境中运行VBScript脚本。我们在软件中内置了一个函数,因此我们可以在自己的脚本中从VBScript脚本中获取和设置变量。

在我们的手册中我们有这样的描述:“VB脚本功能提供了一个新的VB对象”AppName“。其中一个函数是:AppName.GetStringVariable(”variable“)。所以在VBScript中使用它就像这样脚本可以设置或获取此变量。您可以在VBScript脚本中编写这样的内容:

stringInput = AppName.GetStringVariable("variable") 

VBscript引擎在与C#.NET应用程序不同的进程中运行。所以这个VBscript对象在不同的​​进程中运行,我想在我的C#.NET应用程序中访问它。

是否有可能在C#.NET环境中获取此变量?

我试过了:

System.Environment.GetEnvironmentVariable("AppName.GetStringVariable(string1)");
System.Environment.GetEnvironmentVariable("AppName.GetStringVariable('string1')");
System.Environment.GetEnvironmentVariable("AppName.GetStringVariable(\"string1\")");

1 个答案:

答案 0 :(得分:0)

在vbScript监视器中,由c#更新并设置属性的文件:

    comp = "."
    dir = "."
    select = "SELECT * FROM __InstanceModificationEvent WITHIN 10 "
    where = "WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=" & dir & "'"

    Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & comp & "\root\cimv2")
    Set events = wmi.ExecNotificationQuery(select & where)
    Do
        Set event = events.NextEvent
        Wscript.Echo event.TargetInstance.PartComponent
    Loop

然后从c#设置FileSystemWatcher到另一个文件(使用json,很容易deserialize)并获取vbScript set属性。