1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Programme automatisch wechseln lassen

Discussion in 'Software allgemein' started by AxelU, Nov 18, 2008.

Thread Status:
Not open for further replies.
  1. AxelU

    AxelU ROM

    Hallo Forum

    ich suche eine Software mit der ich zwischen zwei verschiendenen Programmen automatisch wechseln lassen kann.

    Hintergrund: Ich habe einen Bildschirm, auf dem für die Mitarbeiter wichige Informationen erscheinen. Leider sind es Informationen die aus zwei Verschiedenen Programmen kommen. Daher muss die Bildschirmausgabe im Zeitabstand von ein ca. 15 Sekunden immer wechseln.

    Kann mir da jemand helfen?

    Gruß Axel
     
  2. Urs2

    Urs2 Megabyte

    Hallo Axel,

    Ob es ein Fertigtool gibt, weiss ich nicht. Wenn nicht, kannst Du es mit einem VBScript versuchen. In der Richtung >

    Code:
    set WshShell = WScript.CreateObject("WScript.Shell")
    
    Do
    	WshShell.AppActivate "Paint"
    	wscript.sleep 5000
    	WshShell.AppActivate "Editor"
    	wscript.sleep 5000
    Loop
    
    Den Code in eine leere TXT-Datei einfügen und diese speichern als DisplayWechsel.VBS

    Zum Testen: Oeffne die beiden Windowsprogramme "Paint" und "Editor" im Vollbild.
    Jetzt die DisplayWechsel.VBS ausführen.

    Nun wechselt der Bildschirm alle 5 Sekunden (= 5000 Tausendstel) von einem zum anderen Programm - bis der PC heruntergefahren wird. Das vorzeitige Beenden des Scripts kann so nur über das Killen im Taskmanager erfolgen, er steht dort als wscript.exe.

    Für Deine beiden Anwendungen muss dann anstatt "Paint" und "Editor" deren Name geschrieben sein, und zwar so, wie er in deren Titelleisten oder im Taskmanager steht.

    Gruss Urs


    PS: Du kannst die beiden Programme auch schliessen, wenn sie gerade angezeigt werden, dann passiert nichts mehr.
    Der Script werkelt aber munter weiter vor sich hin und wechselt alle 5 Sekunden zu einem Fenster... das es nicht mehr gibt...
     
    Last edited: Nov 19, 2008
  3. AxelU

    AxelU ROM

    Hallo Urs,

    vielen Dank für die Antwort. Wäre es nicht möglich, wenn ich das VB-Skript mit einer Batch-Datei aufrufe? Dann brauche ich doch nur die Batch-Datein killen und das Skript hört auf. Oder sehe ich das falsch?

    Gruß Axel
     
  4. Urs2

    Urs2 Megabyte

    Die Batch würde den Script aufrufen und hätte damit ihre Arbeit getan. Wenn sie ihn auch schliessen soll, ist das Problem nur von der VBS auf die BAT verschoben > Wann soll sie den Script schliessen?

    Man könnte in der VBS eine Bedingung einfügen, dass sie sich selbst schliesst >>>
    - nach einer Laufzeit von X Stunden, oder
    - um 17.00 Uhr, zum Beispiel

    Sonst könnte man vielleicht eine Batch aufrufen, die wscript.exe killen lässt. Wenn auch andere Scripts laufen sollten, weiss sie allerdings nicht, welche wscript.exe sie killen soll...

    Gruss Urs
     
  5. Urs2

    Urs2 Megabyte

    Hallo Axel,

    Das Biest hatte mir keine Ruhe gelassen... hier eine für den User freundlichere Idee.

    Es braucht zwei VBScripts >

    1. StartDisplayWechsel.VBS
    Code:
    'Startet 2 Programme und zeigt sie abwechslungsweise an
    
    Const HKEY_LOCAL_MACHINE = &H80000002
    strComputer = "."
    
    		'schreibt "ein" in Registry = DisplayWechsel läuft
    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
        strComputer & "\root\default:StdRegProv")
    
    strKeyPath = "SOFTWARE\MeinVersuch"
    strValueName = "DisplayWechsel"
    strValue = "ein"
    oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
    
    		'startet Notepad und Paint als Vollbild 
    Set objShell = CreateObject("WScript.Shell")
    objShell.Run Chr(34) & "C:\Windows\notepad.exe", 3, False
    objShell.Run Chr(34) & "C:\Windows\System32\mspaint.exe", 3, False
    
    		'startet Wechselanzeige
    set WshShell = WScript.CreateObject("WScript.Shell")
    
    Do
    	WshShell.AppActivate "Paint"
    	wscript.sleep 5000
    	WshShell.AppActivate "Editor"
    	wscript.sleep 5000
    		'prüft ob Stoppbefehl erteilt, wenn ja, stoppt Displaywechsel
    	oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
    
    Loop Until strValue = "aus"
    
    2. StopDisplayWechsel.VBS
    Code:
    'stoppt die StartDisplaywechsel.vbs
    
    Const HKEY_LOCAL_MACHINE = &H80000002
    strComputer = "."
    
    		'schreibt "aus" in Registry = Displaywechsel wird stoppen
    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
        strComputer & "\root\default:StdRegProv")
     
    strKeyPath = "SOFTWARE\MeinVersuch"
    strValueName = "DisplayWechsel"
    strValue = "aus"
    oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
    
    Bedingungen für den Versuch >

    - Im RegEditor unter "HKey_Local_Machine\Software" den Schlüssel "MeinVersuch" anlegen, und darunter den Schlüssel "DisplayWechsel" als Zeichenfolge

    - Paint und Editor müssen bei Dir den Pfad haben wie er im Script steht, sonst Script anpassen

    - Von den beiden VBS einen Link ins Startmenü legen >> da sich immer ein Programm in den Vordergrund schiebt, kann man die StopDisplayWechsel.vbs sonst schlecht finden...

    Funktion >

    - StartDisplayWechsel setzt den Reg-Eintrag auf "ein", startet die beiden Programme und beginnt die Wechsel-Anzeige...

    - StopDisplayWechsel setzt den Reg-Eintrag auf "aus" >>> StartDisplayW... liest dies und macht Selbstmord.

    Wenn Du die beiden Programme vorher selbst starten willst, einfach die 3 Zeilen unter "'startet Notepad und Paint..." löschen.

    Gruss Urs
     
    Last edited: Nov 20, 2008
  6. AxelU

    AxelU ROM

    Hallo Urs,

    der erst Vorschlag funktioniert schon wunderbar. Ich starte die vbs Datei einfach mit einer Batch-Datei. Wenn ich die Batch-Datei schließe, hört auch das Skript auf.

    Ich habe aber noch eine Frage:

    Der Wechsel zwischen drei Programmen läuft wunderbar. Wenn der Rechner jetzt ein Fax empfängt, dann macht der PDF Creater ein PDF daraus und archiviert es. Das Fax wird dann durch den Acrobat angezeigt. Der PDF-Creator starte beim drucken ein Skript, welches den Acrobat nach 10 Minuten wieder schließt. Das Problem ist jetzt nur, sobald das "Wechselskript" das nächste Programm wieder anzeigt, verschwindet das PDF im Hintergrund. Besteht die Möglichkeit, dass wenn der Acrobat geöffnet ist, dass dieser immer im Vordergrund ist, und wenn dieser nach 10 Minuten automatisch geschlossen wird, dann der wechsel weitergeht?
     
  7. Urs2

    Urs2 Megabyte

    Hallo Axel,

    Ja, das funktioniert mit meinen beiden Varianten, im "DisplayWechsel.vbs" oder im "StartDisplayWechsel.vbs"

    Du meinst das grosse Programm "Acrobat" oder den "Adobe Reader" ?
    Ich habe den "Adobe Reader" genommen - wenn Acrobat, dann im Code die Titelzeile von "Acrobat oder so" verwenden.
    BTW > Es reicht der Titel "Adobe Reader", ohne den dort auch angezeigten Namen der geöffneten Datei.

    Nur das schon vorhandene Do/Loop so ergänzen >

    Code:
    Do	
    	[COLOR="Red"]strAcro = WshShell.AppActivate("Adobe Reader")[/COLOR]
    			'wenn Acro nicht läuft
    	[COLOR="red"]if strAcro = False Then[/COLOR]
    			'vorhandene Befehle
    		WshShell.AppActivate "Paint"
    		wscript.sleep 5000
    		WshShell.AppActivate "Editor"
    		wscript.sleep 5000
    			'wenn Acro läuft
    	[COLOR="red"]Else
    		wscript.sleep 60000
    	end if[/COLOR]
    Loop
    Funktion >

    - Prüft den Rückgabewert des ersten AppActivate. Wenn AdobeReader nicht gefunden >>> Wert = False

    - Wenn False, dann Wechsel zwischen den zwei Programmen, wie gehabt

    - Wenn True, dann eine Minute warten, und dann schauen, ob der Reader immer noch da ist...
    Man könnte dieses Sleep gleich auf 660000 (= 11 Min) setzen. Wenn aber das PDF etwas länger angezeigt wird, oder früher verschwindet, blockiert er sich 11 Minuten für die Katz... Der soll nur was tun...

    Wenn Deine zwei Programme getrennte Wörter anzeigen, wie bei "Adobe Reader", musst Du sie möglicherweise auch in Klammern setzen, wie bei meinem neuen AppActivate.

    Gruss Urs
     
  8. AxelU

    AxelU ROM

    Danke für deine Unterstützung. Aber kann es sein, dass es unter Server 2003 nicht läuft?
     
  9. Urs2

    Urs2 Megabyte

    Kann ich nicht prüfen, kann ich mir aber auch nicht vorstellen. Die WScript-Engine ist für alle Windows identisch.

    Was funktioniert denn nicht? Welche Error-Meldung?
    Zumindest der Script in #2 hatte doch funktioniert?

    Die Zeilen in #7 funktionieren alleine natürlich nicht. Sie sind nur eine Ergänzung des Do/Loop der Scripts in #2 oder #5.
    In meinem normalen XP funktionieren aber beide Varianten mit dieser Ergänzung..

    Zumindest muss oberhalb des "Do" in #7 noch diese Zeile stehen (so wie in #2) >>>

    set WshShell = WScript.CreateObject("WScript.Shell")

    Gruss Urs
     
Thread Status:
Not open for further replies.

Share This Page