'v3.8******************************************************** ' File: programmauswahl.vbs ' Autor: dieseyer@gmx.de ' dieseyer.de ' ' Wechselt zwischen 2 Programmen, von denen immer eines ' gestartet sein soll. '************************************************************ Option Explicit Dim WSHShell, fso, FileIn, FileOut Dim Text, Prog, Prog1, Prog2, ProgExec, MsgIcon Set WSHShell = WScript.CreateObject("WScript.Shell") Set fso = WScript.CreateObject("Scripting.FileSystemObject") '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' erstes Programm festlegen Prog1 = "C:\Programme\Windows NT\Zubehör\WORDPAD.EXE" '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' gibt es das erstes Programm nicht, ein anders festlegen if not fso.FileExists( Prog1 ) then Prog1 = "C:\Programme\Zubehör\WORDPAD.EXE" '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' gibt es das erstes Programm nicht ==> Programmende if not fso.FileExists( Prog1 ) then MsgBox Prog1 & vbCRLF & " existiert nicht. Das ist das Ende." WScript.Quit End If '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' zweites Programm festlegen Prog2 = "C:\WINNT\system32\CALC.EXE" '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' gibt es das zweite Programm nicht ==> Programmende if not fso.FileExists( Prog2 ) then MsgBox Prog2 & vbCRLF & " existiert nicht. Das ist das Ende." WScript.Quit End If Prog = "---" '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' "Text" für die erste Frage zusammenbauen Text = "Zur Zeit läuft keines der beiden Programme. " & vbCRLF Text = Text & "Welches soll gestartet werden?" & vbCRLF & vbCRLF Text = Text & "[ja]" & vbTab & Prog1 & vbCRLF & vbCRLF Text = Text & "[nein]" & vbTab & Prog2 & vbCRLF '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' erste Frage stellen; Ergebnis steht dann in "Text" Text = MsgBox( Text, vbYesNoCancel + vbQuestion , WScript.ScriptName) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Wenn "Abbrechen" betätigt wurde If Text = vbCancel then WScript.Quit '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' ausgewähltes Programm an Variable "Prog" übergeben If Text = vbYes then Prog = Prog1 If Text = vbNo then Prog = Prog2 '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' ausgewähltes Programm starten Set ProgExec = createObject("WScript.Shell").exec( Prog ) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' "Do .. Loop"-Schleife immer wieder durchlaufen Do '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' 500ms Pause WScript.Sleep 500 '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' In der folgenden Abfrage-"MsgBox" soll je nach bereits ' laufenden Programm ein anderes Icon angezeigt werden if Prog = Prog1 then MsgIcon = vbExclamation ' Warnung if Prog = Prog2 then MsgIcon = vbInformation ' Information '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' "Text" für die folgende Abfrage-"MsgBox" zusammen bauen Text = "Zuletzt wurde " & vbCRLF & vbCRLF Text = Text & vbTab & Prog & vbCRLF & vbCRLF Text = Text & "gestartet - soll jetzt " & vbCRLF & vbCRLF if Prog = Prog1 then Text = Text & vbTab & Prog2 & vbCRLF & vbCRLF if Prog = Prog2 then Text = Text & vbTab & Prog1 & vbCRLF & vbCRLF Text = Text & "gestartet werden? " '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Abfrage-"MsgBox" stellen Text = MsgBox( Text, vbOKCancel + MsgIcon , fso.GetFileName( Prog ) & " . . . wurde zuletzt gestartet." ) '---------------------------------------------------------------------------------- ' Info zu vbOKCancel + MsgIcon ' der zweite Parameter (nach dem ersten Komma) legt fest, welche Schaltflächen ' und welches Bildchen zu sehen ist '---------------------------------------------------------------------------------- ' Info zu fso.GetFileName( Prog ) & " . . . wurde zuletzt gestartet." ' der dritte Parameter (nach dem zweiten Komma) legt den Tietel fest, der im ' oberen (blauen) Fensterbalken und damit unten in der Task-Leiste angezeigt ' wird. '---------------------------------------------------------------------------------- ' Info zu fso.GetFileName( Prog ) ' löst den Dateinamen aus dem Dateinamen mit Pfadangabe heraus '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Wenn "Abbrechen" betätigt wurde, "Do .. Loop"-Schleife ' verlassen If Text = vbCancel then Exit Do '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Wenn "Ok" betätigt wurde If Text = vbOk then '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Das bereits laufende Programm beenden ProgExec.terminate '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' "Text" erhält den "anderen" Programmnamen if Prog = Prog1 then Text = Prog2 if Prog = Prog2 then Text = Prog1 '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' "anderes" Programm starten Set ProgExec = createObject("WScript.Shell").exec( Text ) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' "Prog" merkt sich, welches Programm gerade gestartet wurde Prog = Text End If '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' . . . und es geht dort weiter, wo "Do" steht Loop '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Das laufende Programm beenden ProgExec.terminate '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Das Skript beenden bzw. verlassen WScript.Quit