MsgBox von cscript aus aufrufen

  • VBScript

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Mono.

    MsgBox von cscript aus aufrufen

    Hi,

    wenn ich ein Skript xyz habe, das so anfängt:

    Visual Basic-Quellcode

    1. Dim wshshell
    2. Dim oFSO
    3. Dim runcommand
    4. Set wshshell = CreateObject("Wscript.Shell")
    5. Set oFSO = CreateObject("Scripting.FileSystemObject")
    6. if instr(1, wscript.fullname, "cscript.exe")=0 then
    7. runcommand = "cscript //Nologo xyz.vbs"
    8. wshshell.run runcommand, 1, true
    9. wscript.quit
    10. end if



    Wie kann ich dann eine MsgBox aufrufen? cscript scheint das komplett zu ignorieren und macht einfach munter weiter ohne irgendwas anzuzeigen, dabei soll es doch angeblich auch Message Boxen unterstützen??!

    Das soll laufen:

    Visual Basic-Quellcode

    1. Result = MsgBox("Externes Programm läuft schon. Programm killen (Ja)? Skript weiterlaufen lassen (Nein)? Oder Skript abbrechen (Abbrechen)?", vbExclamation+vbYesNoCancel+vbApplicationModal, "Externes Programm läuft schon!")



    Ich möchte Result auswerten um eine der angegebenen Aktionen ablaufen zu lassen. Nur ist es so, dass cscript die MsgBox-Anweisung komplett übergeht und nichts anzeigt. Was muss ich tun, damit die Dialogbox angezeigt wird?

    Alternativ (falls Dialogboxen in Cscript nicht möglich sind):

    Ich könnte notfalls mit einer Abfrage in dem Skriptfenster leben, also, dass der User in der Konsole gefragt wird ob er das Programm killen möchte, das Skript weiterlaufen lassen möchte oder das ganze Skript abbrechen möchte und dementsprechend J / N / A eingeben muss, welches dann die Aktionen auslöst.


    Quellcode

    1. > Programm killen? [Ja/Nein/Abbrechen]

    Wie mache ich eine solche User-Interaktion am besten?


    Danke schonmal!
    Hm... also, ich lasse es unter Windows 7 mit UAC laufen. Wenn ich es in wscript laufen lasse, dann kriege ich die MessageBox, leider aber auch alle anderen Meldungen, z.B. mit echo. Deshalb prüft ja das Skript ob es als wscript oder cscript läuft und wenn wscript, dann soll es sich über cscript selbst aufrufen.

    Ok, andere Frage: Wie kann ich ein VBS mittels cscript laufen lassen und dennoch eine MessageBox erzeugen?

    Visual Basic-Quellcode

    1. Option Explicit
    2. Dim strArgs, strCmd, strHost, i, objScript, objShell
    3. Set objShell = CreateObject( "WScript.Shell" )
    4. 'CScript bzw Wscript extrahieren aus dem Fullname! (nicht ScriptFullName)
    5. strHost= UCase( Right( WScript.FullName, 12 ) )
    6. If strHost <> "\CSCRIPT.EXE" Then
    7. ' Mögliche Argumente zusammen setzen
    8. strArgs = ""
    9. If WScript.Arguments.Count > 0 Then
    10. For i = 0 To WScript.Arguments.Count
    11. strArgs = strArgs & " " & WScript.Arguments(i)
    12. Next
    13. End If
    14. ' CScript command zusammensetzen
    15. strCmd = "CSCRIPT.EXE //NoLogo """ & WScript.ScriptFullName & """" & strArgs
    16. ' Script mit CScript ausführen
    17. Set objScript= objShell.Exec( strCmd )
    18. ' Auf Beenden des Scripts warten
    19. Do While objScript.Status = 0
    20. WScript.Sleep 100
    21. Loop
    22. 'ggf. ExitCode des objScripts verwenden oder sonst was noch machen
    23. WScript.Quit
    24. End If
    25. 'Hier kommt das eigentliche Script
    26. MsgBox "Test"


    Gruss mono
    Das ist meine Signatur und sie wird wunderbar sein!