現在、文字列の配列から「オンザフライ」で2番目のスクリプトを作成し、それを外部secondfile.vbs
ファイルに書き込むことにより、メインのvbscriptから新しいvbscriptWshShell.Run "C:\secondfile.vbs"
を実行しています。
私が抱えている問題は、何度も繰り返す必要があるため、FSO を使用して新しい vbs ファイルを書き込むと、プロセスが少し遅くなることです。これを解消しようとしています。物理ファイルを作成せずにメモリから vbscript を実行する方法はありますか? スクリプトを文字列として取得し、独立した vbscript として直接実行する方法を探しています。ご提案いただきありがとうございます。
現在の仕組みを簡略化したコードを次に示します。
Option Explicit
'this is the main RhinoScript file
Call MainRhinoScript()
Sub MainRhinoScript()
'create Wscript.Shell object
Dim WshShell : Set WshShell = CreateObject("WScript.Shell")
Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject"):
'get or create user settings plugin folder and vbs file path string
Dim strVBSEventWatcherFile : strVBSEventWatcherFile = "C:\eventwatcher.vbs"
Do
'create auto-generated vbs file here and run it
Call WriteVBS_EventWatcher_File(strVBSEventWatcherFile,
Call WshShell.Run(strVBSEventWatcherFile)
'The main code goes here, looped until done.
'VBS eventwatcher script file is running simultaneously.
Loop
End Sub
'this is simplified VBS writing subroutine to demonstrate how the code works, the actual one is much longer:
Private Sub WriteVBS_EventWatcher_File(strFilePath)
Dim i,fso : Set fso = CreateObject("Scripting.FileSystemObject")
Dim file : Set file = fso.CreateTextFile(strFilePath, True)
file.WriteLine("Option Explicit")
file.WriteLine("")
file.WriteLine("Call Main()")
file.WriteLine("Sub Main()")
file.WriteLine(" Dim WshShell : Set WshShell = CreateObject(""WScript.Shell"")'create shell script object")
file.WriteLine("WScript.Sleep 10")
file.WriteLine("WshShell.SendKeys ""Rhino_Preselect "" ")
file.WriteLine("End Sub")
file.Close()
End Sub