2011-07-29 6 views
1

VBScriptが別のアプリケーション内に読み込まれると、VBScriptをロード/実行するアプリケーションによってオブジェクトが作成されるため、VBScriptをロードするアプリケーションとの間で変数を取得および設定できます。実行されたC#アプリケーションからVBスクリプトオブジェクトにアクセスする

ApplicationName.GetStringVariable("string1") 

私は、次のcommnandでのVBScriptからの私のC#アプリケーションを実行しています:私が使用

Set WshShell = CreateObject("WScript.Shell") 
Return = WshShell.Run("c:\TestAppDelete.exe", 1, true) 

私は、次のコマンドを使用して変数を読んでいるロードVBScriptで

bWaitOnReturnを実行して、他のC#アプリケーションの実行中にVBScriptが実行されるようにします。しかし、私はC#アプリケーションからこのVBScriptオブジェクトにアクセスする方法を見つけることができません。それはオブジェクトが存在しないことを私に伝えます。これは私のC#のコードです:

私はVBScriptのオブジェクトにアクセスしようとすると、次のコードでのVBScriptのexeファイルを実行しています:

MSScriptControl.ScriptControlClass sc = new MSScriptControl.ScriptControlClass(); 
sc.Language = "VBScript"; 
sc.AddCode("MsgBox ApplicationName.GetStringVariable(\"string1\")"); 

は私が間違って何をしているのですか?

答えて

1

TestAppDelete.exeを実行すると、新しく新しいプロセスが作成されます。 ScriptControlClassを作成すると、新しい新しいプロセスで新しく新しいスクリプトコンテキストが作成されます。 ApplicationNameを使用するスクリプトにコードを追加すると、そのオブジェクトは存在せず、したがって失敗します。

代わりにC#.exeを作成する代わりに、COM互換のC#.dllを作成することを検討してください。

+0

特定のプロセスを見つけてオブジェクトに直接アクセスする方法はありますか? – jmelhus

+0

@jmehlus:いいえ。 – AnthonyWJones

関連する問題