killtec
Goto Top

Programme die IDLEn beenden.

Hallo zusammen,
ich suche nach einer Möglichkeite, mit der man ein bestimmtes Programm bei einer Bestimmten IDLE-Zeit beendet.
Bsp. nach 15 Minuten oder 30 Minuten soll ein bestimmtest Programm / Prozess beendet werden.
Gibt es hier was?
Kann man da über Taskkill und den Taskmanager etwas hin bekommen?

Hintergrund des ganzen ist ein ERP System was schon eine Lizenz beansprucht sobald es geöffnet ist. Einige User müssen aber nur Daten anzeigen und lassen das Programm dann den ganzen Tag ungenutzt.

Gruß

Content-ID: 236663

Url: https://administrator.de/forum/programme-die-idlen-beenden-236663.html

Ausgedruckt am: 23.12.2024 um 07:12 Uhr

colinardo
colinardo 28.04.2014, aktualisiert am 02.12.2014 um 10:52:36 Uhr
Goto Top
Hallo killtec,
dazu kannst du den Taskplaner benutzen der nach einer gewissen IDLE Zeit (unter Bedingungen und Trigger) immer eine kleine Batch aufruft, die prüft ob ein Prozess existiert und Ihn dann beendet.
@echo off
set "process=calc.exe"  
tasklist | findstr /bi "%process%" && taskkill /IM "%process%"  

d30c470d64934d03ffd0b2b8e1e5dc03

221dfe27b94ef8eaf156a2fa97ba3f48


Alternativ dazu ein kleines AutoIT Script:
(Zeile 3 trägst du den Prozessnamen ein der beendet werden soll, Zeile 5 den Intervall wie oft überprüft werden soll ob sich die Maus inzwischen bewegt hat, und Zeile 7 die Zeit der Inaktivität ab der die Anwendung geschlossen werden soll.) Dieses Programm läuft dauerhaft im Hintergrund.
#NoTrayIcon
;Prozess der geschlossen werden soll
Const $PROCESS = "calc.exe"  
;Checkintervall in Sekunden
Const $INTERVALL = 60
; Zeit der Inaktivität(Sekunden) nach der der Prozess geschlossen wird
Const $IDLETIME = 900

global $idle_time = TimerInit()
$oldPos = MouseGetPos()
While 1
	$nowPos = MouseGetPos()
	if $oldPos = $nowPos and $oldPos[1] = $nowPos[1] then
		if TimerDiff($idle_time) >= ($IDLETIME * 1000) then
			if ProcessExists($PROCESS) Then
				ProcessClose($PROCESS)
			EndIf
		Endif
	Else
		$idle_time = TimerInit()
		$oldPos = $nowPos
	EndIf
	Sleep($INTERVALL * 1000)
WEnd
Grüße Uwe
Anton28
Anton28 29.04.2014 um 07:48:45 Uhr
Goto Top
Guten Morgen,

das mit dem Killen halte ich für eine schlechte Idee.
Wie kannst Du unterscheiden, wer nur Daten abfragt und wer eine Eingabe zur Buchung oder Planung macht und nur durch ein Telefonat oder eine Besprechung unterbrochen worden ist ?
Viel Spaß beim erklären, warum der User seine Arbeit der letzten 4 Minuten neu machen muss.

Welches ERP-System verwendest Du ?

Du hast meiner Meinung nach 2 Möglichkeiten.

Anfrage beim Hersteller, ob es nicht eine Unterscheidung zwischen Voll-User und Mini-User gibt.
Will heißen:
Für Power-User die Erfassen, Planen und sonstiges --> Voll User Lizent
Für Mal Anzeigen und sonst nichts --> Mini User

Mal beim Hersteller nachfragen, ob man ein Time-Out einstellen stellen kann.
Bei den Usern, die nur Anzeigen und vergesslich sind nach 30 Minuten inaktivität -- automatischer Logout

Und Du hast noch folgende Möglichkeit.
Dienstanweisung/Organisationsanweisung Wer die Anwendung nicht braucht, muss sich Abmeldung, oder die Abteilung muss einen zusätzlichen User lizensieren.

Ich denke, mit den Möglichkeiten 1 und 2 wirst Du die wenigsten Probleme haben.

Eine Frage noch:

Was passiert, wenn Du einen Prozess einfach mit kill beendest.
Wer räumt auf ?
Lock-Dateien, Sperreinträge, etc etc etc.

Gruß

Anton
killtec
killtec 29.04.2014 um 08:24:31 Uhr
Goto Top
Hi,
@colinardo: An so etwas in der Richtung dachte ich auch face-smile
Hab nur nicht bedacht, dass das mit Win7 so einfach sein kann. Werde das heute mal testen.

@Anton28: Das mit dem Prozess beenden ist kein Problem. das ERP bemerkt so etwas recht schnell. Es geht an den Plätzen auch nur um Daten anzeigen, von daher ist das alles ok. Die User zu schulen bringt nichts, da hier jedes mal andere Personen dran sind. Da wird "mal schnell" was nachgeschaut und dann bleibt das teilweise 24h so stehen. Aber beim ERP Hersteller werden wir noch nachfragen ob das evtl. geht.

Gruß