danielesim
Goto Top

Batch - ESC Präsentation

Ich bin am verzweifeln und brauche dringend Hilfe
Ich versuche mal zu erklären:

Wir möchten in unserem Schaufenster eine PP Präsentation laufen lassen. Dazu habe ich einen Computer mit Windows XP. Die Präsentation soll Morgens um 8.00 Uhr starten und Abends um 22,00 Uhr beenden. Nun gut. (Der Computer soll in der zwischenzeit nur in den Ruhezustand gesetzt werden.
Nach etwa 3 Stunden habe ich herausgefunden, wie ich die Präsentation starten kann. (Geplante Task) Auch im Ruhezustand wird so die Präsentation gestartet.
Nun bringe ich es aber nicht vertig den PC wieder in den Ruhezustand zu bringen. Nicht einmal der Bildschirmschoner kommt wenn die Präsentation lauft. Also habe ich wieder Stundenlang gesucht. Ich glaube nun es gäbe eine Möglichkeit mit einem Batch (weis nicht einmal was das ist. Habe es aus verschiedenen Foren.) Dieser Batch sollte einfach nur die ESC Taste drücken damit die Präsentation schliesst, dann kann ich den Ruhezustand auf eine Minute runtersetzten. Ich kann einfach nicht mehr. Bitte helft mir Ich verstehe leider nichts von Batchs, da muss ich euch experten Fragen!
Lieber Gruss
Daniele

Änderungen:
01.04.2007 01:41 Uhr - Doppelpost am Ende des Beitrags gelöscht.
Dani (Moderator)
01.05.200718:52 - Weiterer Doppelpost gelöscht.
01.05.200718:53 - Dani darauf hingewiesen, dass wir den 1.Mai haben, nicht April.
//Biber

Content-Key: 57925

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

Printed on: April 25, 2024 at 14:04 o'clock

Member: n4426
n4426 Apr 30, 2007 at 20:22:56 (UTC)
Goto Top
Hi,

ich hab mal kurz gegoogel und folgendes VBS-Script gefunden.

set WSHShell = CreateObject("WScript.Shell")  
WSHShell.Run "%windir%\system32\rundll32.exe powrprof,SetSuspendState"  
set WSHShell = CreateObject("WScript.Shell")  
WSHShell.Run "%windir%\system32\rundll32.exe powrprof,SetSuspendState"  

Das ganze einfach in eine VBS-Datei speichern und dann ebenfalls über Geplante Task ausführen.

mfg
andi

PS: Das Script hab ich nicht ausprobiert.
Member: gemini
gemini Apr 30, 2007 at 20:46:50 (UTC)
Goto Top
Hi,

mit den PSTools von Sysinternals Microsoft geht es auch
http://www.microsoft.com/technet/sysinternals/utilities/psshutdown.mspx
Set objShell = CreateObject("WScript.Shell")   
objShell.Run "psshutdown.exe -d -t 0"  
Das ganze in eine vbs-Datei und als geplanten Task starten.
Wenn die psshutdown.exe nicht im selben Verzeichnis wie das Script liegt muss der komplette Pfad angegeben werden.

HTH.
gemini
Member: danielesim
danielesim Apr 30, 2007 at 21:36:45 (UTC)
Goto Top
Das glaube ich jetzt nicht!
Es funktioniert einwandfrei. Jetzt habe ich 6 Stunden gesucht und versucht.
Ihr seit einfach die Besten.
Vielen Vielen Dank
Member: danielesim
danielesim May 01, 2007 at 06:04:24 (UTC)
Goto Top
Zu früh gefreut!
Nun habe ich es zwar geschafft, dass der PC in den Ruhestand gesetzt wird, die PowerPoint Präsentation bleibt jedoch offen. Das heisst, ich kann mittels geplanten Task nicht nochmal die Präsentation starten, um den PC wieder aufzuwecken. Ich sollte also ein batch haben die lediglich die Präsentation beendet, damit der Ruhezustand ohne Präsentation erfolgt.
Was kann ich da machen?

Liebs Grüessli
Daniele
Member: gemini
gemini May 01, 2007 at 06:41:42 (UTC)
Goto Top
Hallo Daniele,

du könntest, bevor der Rechner in den Standby geht,:
a) den Prozess terminieren
strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  

Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'POWERPNT.EXE'")  

For Each objProcess in colProcessList
    objProcess.Terminate()
Next

oder b) probieren, ob es zu Presentations.Open auch ein Presentations.Close gibt, resp. ob es so überhaupt möglich ist.
Bei den Parametern zu SlideShowSettings müsstest du ebenfalls eruieren, was sie genau bewirken.
Const ppAdvanceOnTime = 2
Const ppShowTypeKiosk = 3
Const ppSlideShowDone = 5

Set objPPT = CreateObject("PowerPoint.Application")  
objPPT.Visible = True

Set objPresentation = objPPT.Presentations.Open("C:\Pfad\zu\Daniele's.ppt")  

objPresentation.Slides.Range.SlideShowTransition.AdvanceTime = 2
objPresentation.Slides.Range.SlideShowTransition.AdvanceOnTime = TRUE

objPresentation.SlideShowSettings.AdvanceMode = ppAdvanceOnTime 
objPresentation.SlideShowSettings.ShowType = ppShowTypeKiosk
objPresentation.SlideShowSettings.StartingSlide = 1
objPresentation.SlideShowSettings.EndingSlide = _
    objPresentation.Slides.Count

Set objSlideShow = objPresentation.SlideShowSettings.Run.View

Do Until objSlideShow.State = ppSlideShowDone
Loop
Quellen: MS ScriptCenter
a) Terminate a Process
b) Run a Microsoft PowerPoint Slide Show

Gruß,
gemini
Member: danielesim
danielesim May 01, 2007 at 07:05:56 (UTC)
Goto Top
Grundsätzlich bräuchte ich doch nur ein Batch, der die Esc Taste drückt, damit die Präsentation schliesst. Somit könnte ich den Ruhezustand auf 1min setzen und dementsprechend könnte auch das Aufwecken klappen. Wie findest du diese Idee, und ist sie realisierbar? Was meinst du mit Prozess terminieren? Was geschiet wenn ich einen Prozess terminiere? Müsste ich dies auch in eine VBS Datei speichern? Grundsätzlich wäre es ja möglich über die geplanten Task, den Task nach x-Stunden wieder zu schliessen. Das Problem ist aber, dass du da den Computer nie Ausschalten darfst, weill sonst der Rytmuss nicht mehr stimmt.

Vielen Dank für deine Unterstürzung

Liebs Grüessli
Member: miniversum
miniversum May 01, 2007 at 08:17:19 (UTC)
Goto Top
Das drücken der Escape Taste per Batch ist nicht wirklich möglich. Wenn müßtest du mal schauen ob es Zusatztools gibt.

Was oben in VBS beschrieben wird würde auch in Batch gehen.
Zum einen würde das Powerpoint zangsbeendet werden:
taskkill /F /IM powerpnt.exe

Das in den Ruhe zustand versetzen würde denk ich nur in VBS oder zusatztools gehen.

miniversum
Member: gemini
gemini May 01, 2007 at 08:34:21 (UTC)
Goto Top
Hi,

mit Batch kann ich dir nicht dienen, Sorry.
Grundsätzlich gibt es noch die Möglichkeit einen Tastendruck an das aktive Fenster zu senden.
Die Methode ist SendKeys.
objShell.SendKeys "{ESC}"  
Das ist aber schon sehr Nahe daran, einen Arbeitslosen hinzusetzen der die Taste drückt face-wink

Was meinst du mit Prozess terminieren? Was geschiet wenn ich einen Prozess terminiere?
Du beendest ihn!
Wenn du Powerpoint startest und danach mit STRG+ALT+ENTF den Taskmanager öffnest, findest du unter dem Reiter 'Prozesse' auch einen mit dem Namen 'POWERPNT.EXE'.
Das Script macht nichts anderes als ein Benutzer, der den Prozess markiert, auf 'Prozess beenden' klickt und die Sicherheitsabfrage mit Ja beanwortet > Powerpoint wird ohne weitere Nachfrage beendet.

Prinzipell kannst du den Rechner, sofern du eine Möglichkeit hast ihn ferngesteuert wieder hochzufahren, sogar ausschalten.
Beim Hochfahren/Anmelden wird per Task die Präsentation gestartet und nach/zu einer best. Zeit die Präsentation geschlossen und der Rechner in den Standby gefahren.
Ist natürlich jetzt ungetestet sollte aber schon so funktonieren.

Ich nehme an dass du, wenn du die Präsentation als PPS speicherst, das Gedingens mit SlideShow sparen kannst. Musst aber testen!
'OpenDanielesPresentation.vbs  

Set objPPT = CreateObject("PowerPoint.Application")  
objPPT.Visible = True

Set objPresentation = objPPT.Presentations.Open("C:\Pfad\zu\Danieles.pps")  
Zum Beenden:
' CloseDanielesPresentation.vbs  
strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  

Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'POWERPNT.EXE'")  

For Each objProcess in colProcessList
    objProcess.Terminate()
Next

set WSHShell = CreateObject("WScript.Shell")  
WSHShell.Run "%windir%\system32\rundll32.exe powrprof,SetSuspendState"  

Schönen Feiertag
gemini