Dieser Beitrag ist schon älter. Bitte vergewissern Sie sich, dass die Rahmenbedingungen oder der enthaltene Lösungsvorschlag noch dem aktuellen Stand der Technik entspricht.

WSH Prozess parallel ausführen und beenden

Mitglied: cim

anderes Script starten und ohne Fehler beenden

Hallo,
wie kann ein WSH-Script ein anderes ausführen und ohne Fehlermeldung beenden?

Hintergrund:
Fortschrittsanzeige für Dateien kopieren

meine bisherige Lösung:

'ScriptEins
set WshShell = wscript.createobject("WScript.shell")
...
set oexec = wshshell.exec("wscript.exe c:\ScriptZwei.vbs")
...
oexec.terminate

ScriptEins kopiert die Dateien
ScriptZwei startet den Internet Explorer für die Fortschrittsanzeige, bei der es ausreicht, dass der User eine Änderung sieht

Nach terminate kommt eine Fehlermeldung "ungültiges Fensterhandle".
Ich vermute, dass ScriptEins zwar ScriptZwei beendet, aber der IE mit der Anzeige dabei seinen Prozess verliert.

Könnte das der Fehler sein?
Wie kann ich den IE von ScriptZwei beenden?
Oder muss ich ScriptZwei anders aufrufen, um es wieder einwandfrei beenden zu können (vielleicht über WshShell.Run Command)?

Vielen Dank!

Content-Key: 32782

Url: https://administrator.de/contentid/32782

Ausgedruckt am: 03.12.2021 um 22:12 Uhr

Mitglied: Biber
Biber 07.08.2006 um 20:02:59 Uhr
Goto Top
Moin cim,

wie Du an der Anzahl der Aufrufe dieser Frage siehst, ist schon gewisses Interesse da.
Aber anscheinend reichen die vorliegenden Information nicht aus, um Dir schlaue Tipps zu geben.

Deshalb bleibt es wieder am Mod hängen.. *seufz*

Rückfragen:
1) besteht das Problem noch oder hast Du es inzwischen selbst gelöst? Wenn ja, wie?
2) Bis zur Aussage "IE starten, um dessen Fortschrittsanzeige zu nutzen" konnte ich Dir gedanklich noch folgen. Aber:
Wenn Du eine Fortschrittsanzeige anzeigst, WTF treibt Dich dann zum .Terminate??
In meiner eher beschränkten Phantasie wäre der gottgegebene erwartete Ablauf, dass das handle ( das doch vermutlich ein handle = CreateObject("InternetExplorer.Application") ist ??) vor sich hin fortschrittsbalkt, so lange kein Error und ReadyState<>4 (Loaded) ist.
Und sich in einem dieser Fälle gefälligst selbst beendet mit WScript.Quit.

Du aber scheinst den Fortschrittsbalken zu starten und irgendwann die aufrufende Hülsenfunktion ("Skript2.vbs") abzuschießen?
Wie kommunizieren denn bei Dir das "arbeitende" (z.B. kopierende) Skript und die "anzeigende" (IE-Laufbalkenzeugs)-Funktion?

Womit ich bei der letzten Frage wäre:
3) Magst Du vielleicht die beiden Schnipsel mal posten?
Habe mich vorher vergewissert, dass unterhalb dieses Kommentars noch ca. 273cm Platz auch für längere Codefragmente wären.
Also keine Scheu.

Grüße
Biber
Mitglied: cim
cim 08.08.2006 um 07:07:27 Uhr
Goto Top
Moin Biber,
sorry, dass ich erst jetzt antworte, aber ich habe die Scripte noch mit ein paar Kommentaren versehen.
Und vielen Dank für die Hilfe!

Ich suche hier gerade etwas, wie ich Dateien anhängen kann ... äh ... aber das geht wohl nur im Beitrag und nicht in Antworten. Wiedemauchsei - dann brauche ich wohl die 273 cm.

Das Problem besteht immer noch. Da ich aber kein Erste-Reihe-Vorne-Sitzer bin und ich Programmieren nicht wirklich gelernt habe, habe ich ein wenig geschummelt:
Das Main-Programm erstellt ein Verzeichnis und startet den Laufbalken (sorry, nur ein Zähler, aber immerhin). Laufbalken schließt sich selbst, wenn Main das Verzeichnis gelöscht hat. Nicht elegant, aber tut.

Aus irgenwelchen Gründen wurden bei mir zwar die Scripte über Quit beendet, allerdings hatte ich im Taskmanager noch die Prozesse (das beim Testen ziemlich ätzend wurde). Daher "terminate". Habe ich aus einem Buch "Inside Windows Script Host".

Variablen mit q haben etwas mit der Quelle zu tun, z = Ziel. Ich hoffe, dass sich durch die Formatierungen die Kommentare nicht allzu sehr verschoben haben.

Und überhaupt: was ist WTF? WZT hätte ich mir noch denken können...

Also schon Mal vielen Dank!
Schöne Grüße!


..und das zweite Skript "c:\Laufbalken.vbs"

[Edit] Formatierung auf <code> gesetzt. Biber
[/Edit]
Mitglied: Biber
Biber 24.08.2006 um 00:25:08 Uhr
Goto Top
Moin cim,

nach längerer Pause mal wieder eine kurze Zwischenmeldung.

Zwischenmeldung, weil eine saubere Antwort doch ein bisschen mehr Zeit brauchen würde.

Aber ein paar Anmerkungen möchte ich doch schon jetzt loswerden, auch wenn es keine umfassende "Antwort" im eigentlichen Sinne wird.

Ich fang mal unsortiert an.
Worauf ich mich nicht einlassen werde, ist die im Tiel formulierte Frage. ("WSH Prozess parallel ausführen und beenden").
Mag auch ein interessantes Thema sein, aber Prozesse, die sich gegenseitig starten und gegenseitig abschießen, das ist eher was für RobotWars oder ähnliches.
So würde ich keine Gebrauchs-Applikation aufziehen.

Ich nehme lieber den Fokus: "Internet-Explorer-Funktionen für eigene Zwecke nutzen" ohne den (kompletten) Explorer anzuzeigen.

Dazu reicht allerdings ein Öffnen einer (weiteren) Explorer-Instanz im vorhandenen Skript - es ist kein zweites Skript nötig.
Beispiel:

An diesem Testschnipsel sind mir -im Vergleich mit Deinem Ansatz- wichtig:
- ich rufe als Seite eine lokale Seite "f:\VBS_Beispiele\Laufbalken\biber.htm" auf.
Die ist vollkommen leer (0 Byte groß). Aber, da sie eben eine lokale Site ist, "darf" ich auch nach dem neueren IE-Security-Patches so etwas wie
..ändern. Ist sonst nämlich tabu - ebenso wie Deine "javascript"-Aufrufe.
Hat mir mein relativ aktuell gepatchter IE sofort um die Ohren gehauen bzw Sicherheitswarnungen vor der Ausführung gebracht.

Ebenso kann ich natürlich z.B. den "Title" oder den "Seiteninhalt" tatsächlich in der lokalen *.htm-Seite als normalen HTML-Text hinterlegen oder aber statt einer echten Seite einfach "about:blank" aufrufen.

Neben der "Zwei-Parallel-Skript-Strategie" und den "javascript"-Funktionen ist das Dritte, was IMHO suboptimal ist, Dein zweiter Parameter im IE-Instanz-initialisieren.

Wenn Du diesen zwiten Parameter "event_" angibst, sagst Du damit, dass Du eine vorhandene EventHandler-Methode durch eine "eigene" ersetzen willst - die muss also die gleichen Inputparameter und die gleichen Rückgabewerte haben wie die Standard-Eventhandler.
Und auch den gleichen Namen, aber mit den angegebenen Prefix ("event_") davor.

Das brauchst Du aber jetzt noch gar nicht - vielleicht später mal, wenn Du eine ProgressBar einbauen willst. Im Moment kannst (und musst meiner Meinung nach) Du den zweiten Parameter weglassen.

Grüße
Biber
Mitglied: cim
cim 18.09.2006 um 12:49:20 Uhr
Goto Top
Hallo,
entschuldige, dass ich mich nicht gemeldet habe.
War im Urlaub und habe jetzt Arbeit bis zum Hals.
So bald ich dazu komme, probiere ich Deine Lösung und melde mich.
Danke und schöne Grüße!
Heiß diskutierte Beiträge
imho
Wir müssen über Corona und das Impfen redenFrankVor 1 TagIMHOOff Topic59 Kommentare

Ich denke, dass geht uns alle an und daher will ich meinen Beitrag dazu leisten, um über Corona und das Impfen aufzuklären. Ich habe bereits ...

general
Echt jetzt? Es werden kommentarfrei Beiträge gelöscht?VisuciusVor 1 TagAllgemeinOff Topic16 Kommentare

Frank: Das hätte ich so nicht erwartet! Erst eine politische Diskussion vom Zaun brechen und dann mit den Antworten überfordert sein?! Ich hatte lediglich darauf ...

question
Browser Zertifikatswarnung lösen?IT-heilt-NIEVor 1 TagFrageVerschlüsselung & Zertifikate13 Kommentare

Hallo an alle, ich benötige mal eure Hilfe, da ich mich mit dem Thema Zertifikate noch nicht gut auskenne. Ich komme gleich mal zum Punkt. ...

question
Ursache für Auslösung Storm-Control Cisco SG350Xlcer00Vor 1 TagFrageNetzwerke17 Kommentare

Hallo zusammen, heute morgen gab es bei uns einen unplanmäßigen Stomausfall, der zum ungraceful-Shutdown der Server sowie der Switche (2 gestackte SG350) führte. Nach Wiederhochfahren ...

tip
Download AdventskalenderMrCountVor 1 TagTippUtilities2 Kommentare

Servus zusammen, auch dieses Jahr bieten wieder einige Webseiten einen Adventskalender mit kostenloser Software an. Hier eine kleine Liste: Vielleicht ist ja für den ein ...

question
Windows 2016 Laufwerk C erweitern D verkleinernr2d2r3poVor 1 TagFrageWindows Server17 Kommentare

Hallo, wir haben hier einen Windows 2016 Server bei den die C-Platte langsam voll wird, aber die D-Platte fast leer ist. Wir kann ich ohne ...

question
"Treesize" für Ordner in einem Outlook-Postfach gelöst StefanKittelVor 1 TagFrageOutlook & Mail2 Kommentare

Hallo, ich habe hier ein Hosted-Exchange-2016-Postfach welches in einem Outlook 2016 eingebunden ist. Dies enthält ca. 500 Ordner und ist fast 100 GB groß. Kennt ...

question
Hausüberwachung Kameraingo1988Vor 20 StundenFragePeripheriegeräte8 Kommentare

Hallo an alle, ich möchte ab sofort mein Haus mit Kameras überwachen lassen. Es sollen 4 Kameras außen am Haus angebracht werden. Ich möchte die ...