Ich führe gerade ein neues VBscript von meinem Hauptvbscript aus, indem ich das zweite Skript 'on the fly' aus einem Array von Strings schreibe und es in eine externe secondfile.vbs
Datei schreibe, dann brauche ich WshShell.Run "C:\secondfile.vbs"
es läuft weiter, während auch der erste läuft.Vbscript von einem anderen Skript ausführen, ohne eine Datei zu schreiben
Das Problem, das ich habe, ist, da ich es oft wiederholen muss, das Schreiben der neuen Vbs-Datei mit FSO verlangsamt den Prozess ein wenig - ich versuche, das zu beseitigen. Gibt es eine Möglichkeit, ein VBScript aus dem Speicher auszuführen, ohne eine physische Datei zu erstellen? Auf der Suche nach einer Möglichkeit, mein Skript als Zeichenfolgen zu erhalten und direkt als unabhängiges vbscript auszuführen. Vielen Dank im Voraus für Anregungen.
Hier ist ein vereinfachte Code, wie es funktioniert zur Zeit:
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
Sieht aus wie ein [XY Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) für mich. Beschreiben Sie das eigentliche Problem, das Sie lösen möchten. – MikeC
Hi @MikeC, Sie können den ersten Teil ignorieren, wenn Sie den Kontext nicht kennen müssen. Die einfache Frage lautet: "Gibt es eine Möglichkeit, ein VBScript im Speicher zu erstellen und es auszuführen, ohne eine VBS-Datei auf HD zu erstellen?" – Jarek
Die Situation ist das genaue Gegenteil. Lesen Sie den Link zum "XY-Problem". Ich möchte wissen, was Sie eigentlich erreichen wollen. – MikeC