http://dieseyer.de • all rights reserved • © 2011 v11.4

'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

http://dieseyer.de • all rights reserved • © 2011 v11.4