VB6 Variablen von einem Skript (.exe) in eine andere (.exe) übergeben
Hi,
habe da ein kleines Problem mit der Übergabe von Variablen aus einem Skript in das andere.
Ich habe 2 Skripte in VB6 erstellt und beide zu einer .EXE kompiliert.
Das eine Skript ruft sozusagen mit Administratorrechten das andere auf.
Im Skript sollen nun 2 Werte ausgelesen und diese im zweiten Skript weiterverarbeitet werden.
Habe hier im Forum schon ein Beispiel gefunden wie es Funktionieren soll und an mein Skript angepasst :
Das Funktioniert auch soweit - das 2. Skript wird aufgerufen.
Um das ganze auch zu Prüfen ob die 2 Variablen übergeben werden habe ich im 2. Skript das hier stehen:
Nur bekomme ich die Fehlermeldung : Laufzeitfehler 424 - Objekt erforderlich
Hat jemand evtl. eine Idee woran das liegen kann ??
Vielleicht ist es ja nur eine Kleinigkeit
Gruss
SKID
habe da ein kleines Problem mit der Übergabe von Variablen aus einem Skript in das andere.
Ich habe 2 Skripte in VB6 erstellt und beide zu einer .EXE kompiliert.
Das eine Skript ruft sozusagen mit Administratorrechten das andere auf.
Im Skript sollen nun 2 Werte ausgelesen und diese im zweiten Skript weiterverarbeitet werden.
Habe hier im Forum schon ein Beispiel gefunden wie es Funktionieren soll und an mein Skript angepasst :
Set wshShell = CreateObject("WScript.Shell")
wshShell.Run ScriptPath & "PSEXEC -u" & " Domäne\Adminuser" & " -p" & " Passwort " & Skript2 & " """ & Var1 & """ """ & Var2 & """", 0, True
Das Funktioniert auch soweit - das 2. Skript wird aufgerufen.
Um das ganze auch zu Prüfen ob die 2 Variablen übergeben werden habe ich im 2. Skript das hier stehen:
Var1 = WScript.Arguments(0)
Var2 = WScript.Arguments(1)
MsgBox Var1 & Var2
Hat jemand evtl. eine Idee woran das liegen kann ??
Vielleicht ist es ja nur eine Kleinigkeit
Gruss
SKID
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 78878
Url: https://administrator.de/contentid/78878
Ausgedruckt am: 26.11.2024 um 15:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo SKID,
Du willst also herausfinden mit welchen Argumenten Deine .Exe ANWENDUNG aufgerufen wurde...
In VB6 gibt es in der Sub Main dummerweise kein Parameter-Array Argument...allerdings existiert die Function Command(). Mit dieser kannst Du Dir die beim Aufruf mitgegebenen Argumente als String abrufen.
Da Du ja wohl mindestens zwei Argumente beim Aufruf übergeben lassen willst solltest Du einen entsprechenden Delimiter vorschreiben...z.B. ein einfaches Leereichen zwischen den Argumenten. So fällt Dir das extrahieren der einzelnen Startparameter leichter.
Nun hast Du Dein Kommandozeilen Argumenten Array.
BTW: Was bei Dir die Fehlermeldung verursacht:
Du hast wahrscheinlich keine Instanz der WScript.Shell in Anwendung2 erstellt.
Was nicht davon ablenkt das dort der logische Fehler liegt:
Es wäre 1) ohnehin nutzlos da Du in zwei verschiedenen Anwendungen agierst.
2) Würde Dir das sowieso nicht weiterhelfen weil (z.B.) WScript.Arguments(0) gar nichts mit Den Aufrufparametern Deiner Anwendung2 zu tuen hat.
Möglicherweise liege ich aber vollkommen falsch da Dein Post etwas verwirrend war: Du schreibst von Skripten als kompilierte .Exe Dateien. Auch war mir nicht ganz klar ob Du Deine beiden Skripte als eine ".Exe" kompiliert hast-->sogesehen ja nicht möglich. Es sei denn Du rufst in Deiner .Exe die gleiche Skript .Exe auf. In diesem und vielen anderen Fällen wäre Dir dann mal das Schlagwort Component Object Model um die Ohren gefeuert. Nur nochmal um eines klarzustellen: Wenn Du in VB6 etwas programmierst und kompilierst...ist es kein Script.
Sage mal Bescheid ob Dir das helfen konnte
BG, Felix
Du willst also herausfinden mit welchen Argumenten Deine .Exe ANWENDUNG aufgerufen wurde...
In VB6 gibt es in der Sub Main dummerweise kein Parameter-Array Argument...allerdings existiert die Function Command(). Mit dieser kannst Du Dir die beim Aufruf mitgegebenen Argumente als String abrufen.
Da Du ja wohl mindestens zwei Argumente beim Aufruf übergeben lassen willst solltest Du einen entsprechenden Delimiter vorschreiben...z.B. ein einfaches Leereichen zwischen den Argumenten. So fällt Dir das extrahieren der einzelnen Startparameter leichter.
Dim cmdLineArgs() As String
cmdLineArgs=Split(Command," ")
Nun hast Du Dein Kommandozeilen Argumenten Array.
BTW: Was bei Dir die Fehlermeldung verursacht:
Du hast wahrscheinlich keine Instanz der WScript.Shell in Anwendung2 erstellt.
Was nicht davon ablenkt das dort der logische Fehler liegt:
Es wäre 1) ohnehin nutzlos da Du in zwei verschiedenen Anwendungen agierst.
2) Würde Dir das sowieso nicht weiterhelfen weil (z.B.) WScript.Arguments(0) gar nichts mit Den Aufrufparametern Deiner Anwendung2 zu tuen hat.
Möglicherweise liege ich aber vollkommen falsch da Dein Post etwas verwirrend war: Du schreibst von Skripten als kompilierte .Exe Dateien. Auch war mir nicht ganz klar ob Du Deine beiden Skripte als eine ".Exe" kompiliert hast-->sogesehen ja nicht möglich. Es sei denn Du rufst in Deiner .Exe die gleiche Skript .Exe auf. In diesem und vielen anderen Fällen wäre Dir dann mal das Schlagwort Component Object Model um die Ohren gefeuert. Nur nochmal um eines klarzustellen: Wenn Du in VB6 etwas programmierst und kompilierst...ist es kein Script.
Sage mal Bescheid ob Dir das helfen konnte
BG, Felix
Guten Morgen,
Hoppla...
mein Fehler. Da schicke ich Dir zwei Zeilen "Code" und dann noch mit einem Fehler...das editiere ich mal in meinem ersten Post
So hatte ich es fälschlicherweise zuerst geschrieben:
Und so muss es in VB6 aussehen:
editiere es wie gesagt noch im ersten Post.
Bisher bekomme ich nur den Fehler beim
Kompilieren das ein Array erwartet wird !?
Mal gucken was das wieder ist.....
Kompilieren das ein Array erwartet wird !?
Mal gucken was das wieder ist.....
Hoppla...
mein Fehler. Da schicke ich Dir zwei Zeilen "Code" und dann noch mit einem Fehler...das editiere ich mal in meinem ersten Post
So hatte ich es fälschlicherweise zuerst geschrieben:
Dim cmdLIneArgs As String()
...
Und so muss es in VB6 aussehen:
Dim cmdLineArgs() As String
...
editiere es wie gesagt noch im ersten Post.
Also, es sind 2 .Exe (Programme).
Das erste Programm ruft das zweite auf.
...Das erste Programm ruft das zweite auf.
Wie kann ich denn in meinem zweiten Programm
überprüfen ob die Werte aus dem
ersten Programm übergeben worden sind ?
Evtl. mit einer MsgBox ?
Du rufst ja aus Exe1 Exe2 mit den Parametern auf:
> Set wshShell =
> CreateObject("WScript.Shell")
>
> wshShell.Run ScriptPath & "PSEXEC
> -u" & "
> Domäne\Adminuser" & "
> -p" & " Passwort " &
> Skript2 & " """ &
> Var1 & """
> """ & Var2 &
> """", 0, True
>
So wie ich das verstehe wird Exe2 also nicht eigenständig sondern eben von Exe1 aus gestartet und somit müsste ja klar sein das Parameter vorhanden sind. Aber mittels der Function Command kannst Du ja überprüfen ob Werte übergeben worden sind.