Frage

In einem Makro für Visual Studio 6 wollte ich ein externes Programm ausführen, also habe ich Folgendes eingegeben:

shell("p4 open " + ActiveDocument.FullName)

Was bei mir zu einem Laufzeitfehler bei der Typinkongruenz führte.Am Ende musste ich Folgendes eingeben:

Dim wshShell
Set wshShell = CreateObject("WScript.Shell")
strResult = wshShell.Run("p4 open " + ActiveDocument.FullName)

Was geht hier vor sich?Ist dieser Unsinn wirklich notwendig oder habe ich etwas übersehen?

War es hilfreich?

Lösung

Als lassevk Ich habe darauf hingewiesen, dass VBScript kein Visual Basic ist.

Ich glaube, das einzige in VBScript integrierte Objekt ist das WScript-Objekt.

WScript.Echo "Hello, World!"

Aus den Dokumenten

Das WScript -Objekt ist das Root -Objekt der Windows -Skript -Host -Objektmodellhierarchie.Es muss nie so instanziiert werden, dass es seine Eigenschaften und Methoden aufgerufen hat, und es ist immer in einer Skriptdatei verfügbar.

Alles andere muss über den CreateObject-Aufruf erstellt werden.Einige dieser Objekte sind hier aufgelistet.

Das Shell-Objekt ist eines davon andere Objekte, die Sie erstellen müssen, wenn Sie darauf Methoden aufrufen möchten.

Eine Einschränkung besteht darin, dass RegExp dies ist Irgendwie integriert, da Sie ein RegExp-Objekt wie folgt in VBScript instanziieren können:

Dim r as New RegExp

Andere Tipps

VBScript ist nicht Visual Basic.

Probieren Sie es mal aus:

Shell "p4 open" & ActiveDocument.FullName

VB6 verwendet & zum Verketten von Zeichenfolgen anstelle von +, und Sie sollten sicherstellen, dass der Dateiname bei Leerzeichen in Anführungszeichen gesetzt wird.Versuchen Sie es so:

Shell "p4 open """ & ActiveDocument.FullName & """"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top