Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VB6 Variablen von einem Skript (.exe) in eine andere (.exe) übergeben

Frage Entwicklung VB for Applications

Mitglied: skid

skid (Level 1) - Jetzt verbinden

23.01.2008, aktualisiert 24.01.2008, 6812 Aufrufe, 6 Kommentare

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 :

01.
Set wshShell = CreateObject("WScript.Shell") 
02.
 
03.
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:

01.
Var1 = WScript.Arguments(0) 
02.
Var2 = WScript.Arguments(1) 
03.
MsgBox Var1 & Var2
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
Mitglied: misterdemeanor
23.01.2008 um 11:16 Uhr
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.

01.
 
02.
Dim cmdLineArgs() As String 
03.
 
04.
  cmdLineArgs=Split(Command," ") 
05.
 
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
Bitte warten ..
Mitglied: skid
23.01.2008 um 13:28 Uhr
Hi Felix,

danke für den Tip.

Werde mal versuchen das ganze auf die Reihe zu bekommen.
Bin nicht soo Fit in Sachen VB
Bisher bekomme ich nur den Fehler beim Kompilieren das ein Array erwartet wird !?
Mal gucken was das wieder ist.....

Gruß
SKID
Bitte warten ..
Mitglied: misterdemeanor
24.01.2008 um 05:04 Uhr
Guten Morgen,

Bisher bekomme ich nur den Fehler beim
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:

01.
Dim cmdLIneArgs As String() 
02.
 ...
Und so muss es in VB6 aussehen:

01.
Dim cmdLineArgs() As String 
02.
...
editiere es wie gesagt noch im ersten Post.
Bitte warten ..
Mitglied: skid
24.01.2008 um 07:36 Uhr
Guten Morgen auch.....

aja, sieht jetzt beim Kompilieren schon besser aus

Ok, kann sein das mein Post etwas verwirrend war da ich von Scripten und .Exe rede - ich versuch´s nochmal

Also, es sind 2 .Exe (Programme).
Das erste Programm ruft das zweite auf. Im ersten Programm werden irgendwelche Werte ausgelesen die im zweiten Programm weiter verwendet werden sollen.
Das ganze hatte ich so gelöst das eine Textdatei mit den ausgelesenen Werten angelegt wird das dann vom 2. Programm wieder ausgelesen wird. Nur will ich jetzt gerne ohne die Textdateien arbeiten und die Werte so übergeben.

Wie kann ich denn in meinem zweiten Programm überprüfen ob die Werte aus dem ersten Programm übergeben worden sind ? Evtl. mit einer MsgBox ?

Wie ist eigentlich das
01.
cmdLineArgs=Split(Command," ")
zu verstehen ?
Muss ich anstelle von Command den Aufruf des 2. Programms schreiben ?

SKID
Bitte warten ..
Mitglied: misterdemeanor
24.01.2008 um 08:16 Uhr
Also, es sind 2 .Exe (Programme).
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:

01.
> Set wshShell = 
02.
> CreateObject("WScript.Shell") 
03.
>  
04.
> wshShell.Run ScriptPath & "PSEXEC 
05.
> -u" & " 
06.
> Domäne\Adminuser" & " 
07.
> -p" & " Passwort " & 
08.
> Skript2 & " """ & 
09.
> Var1 & """ 
10.
> """ & Var2 & 
11.
> """", 0, True 
12.
> 

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.
Bitte warten ..
Mitglied: skid
24.01.2008 um 10:16 Uhr
So, jetzt Funktioniert´s so wie es soll - kann jetzt die Werte auslesen

Dank Dir für Deine Hilfe !!!

SKID
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
gelöst PS1 Skript in EXE (4)

Frage von 112Timo zum Thema Batch & Shell ...

Batch & Shell
Powershell CHAT Skript (5)

Frage von xpxy15 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...