2011-07-13 17 views
2

我們有一個用於自動執行某些任務的公司應用程序(實際上並不重要)。在我們的軟件中,我們能夠根據自己的命令構建腳本,並且能夠在相同的環境中運行VBScript腳本。我們在軟件中內置了一個函數,因此我們可以在我們自己的腳本中從VBScript腳本獲取和設置變量。我們有這樣的描述:「VB腳本功能提供了一個新的VB對象」AppName「,其中一個功能是:AppName.GetStringVariable(」variable「)。因此,通過像這樣使用它的VBScript腳本有可能設置或獲取這個變量你會寫這樣的的VBScript腳本里面:。訪問C#.NET環境中的VB腳本對象(獲取或設置值)

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\")"); 
+0

您是否在您的C#.NET應用程序中託管VBScript引擎?或者腳本引擎運行在與C#.NET應用程序不同的進程中?或者是你的VBScript調用C#.NET應用程序? – 2011-07-14 13:15:49

+0

對不起,不澄清這一重要信息。 VBscript引擎運行在與C#.NET應用程序不同的進程中。所以這個VBscript對象運行在一個不同的進程中,我想在我的C#.NET應用程序中訪問它。 – jmelhus

回答

0

中的VBScript監控由C#更新文件,並設置該屬性:從C#設置一個FileSystemWatcher

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 

然後到另一個文件(使用JSON ,這很容易deserialize)並獲得vbScript集屬性。