Programm per bat schließen (ohne taskkill) möglich?

papillon121

Ensign
Registriert
Feb. 2016
Beiträge
229
Hallo Leute,

Ich habe eine kurze Frage, vielleicht kennt sich ja jemand von euch mit Befehlen aus, die ich in einer .bat Datei verwenden kann.

Folgendes Problem:

Ich schließe ein bestimmte Programm per .bat Datei mit folgendem Befehl: taskkill /F /IM testprogramm.exe

Nun funktioniert es auch, das Programm wird geschlossen, ABER auf der rechten Seite wird das Symbol weiterhin angezeigt und mit der Zeit werden es immer mehr Symbole (alle natürlich die gleichen). Nach einigen Tagen (ist ein Server) kommen da hunderte Symbole zusammen, da das Programm immer wieder automatisiert gestartet und beedet wird (was gewollt ist).

Wie kann ich das Programm schließen OHNE das das Symbol in der Taskleiste bestheen bleibt, bzw. wie kann ich die Leiste aktualisieren? Wenn ich mit der Maus darüber gehe, verschwinden die Symbole, aber ich habe keine Lust mich täglich auf dem Server einzuloggen, nur um mit der Maus über diese Leiste zu fahren.

Ich hoffe jemand hat eine Idee, wie ich das Problem lösen kann.

p.s: explorer exe beeden und neustarten per bat funtkioneirt zwar, allerdings verschwinden dann auch andere, wichtige symbole, die noch laufen, keine ahnung warum das so ist.

Grüße!
 
Was heisst auf der rechten Seite? Rechts von was? Vielleicht ein Screenshot? (soweit rechtlich möglich)
 
"taskkill /F" ist eine Notlösung und radiert das Programm einfach aus dem RAM. Das Programm hat keine Chance sich normal zu beenden und deshalb bleibt das Icon in der Taskbar, bis Windows irgendwann selbst checkt, dass das Programm ausradiert wurde. Besser wäre Taskkill ohne /F
 
  • Gefällt mir
Reaktionen: Micke und Arc Angeling
Das bat läuft nehme ich ans Scheduled Task?
Wenn du dann nicht eingeloggt bist gibt es die Taskleiste doch garnicht, was passiert, wenn die bat 2-3mal lief und du dich dann einloggst, gibts dann die Icons auch?
 
Naja, Taskkill ist halt einfach nicht der richtige Weg um Prozesse zu beenden. Da muss ja ein Cleanup stattfinden, der bei einem Kill nicht erledigt wird. Der Trayicon Provider muss das deregistrieren, was beim kill aber ausbleibt.
Sprich du müsstest einfach einen sauberen Weg finden, die Software zu beenden.
 
Damit das Symbol im Tray verschwindet, müsstest du das Programm "richtig" beenden, statt es abzuschießen - vielleicht gibt es ja einen passenden Parameter wie /quit.

Ansonsten würde ich mich von den "toten Icons" nicht stören lassen. Das Programm wird ja beendet und belegt keine zusätzlichen Ressourcen und die Icons siehst du nur, wenn du dich lokal am Server anmeldest, andere Benutzer sollte davon nicht betroffen sein.
 
Zuletzt bearbeitet:
oder du hängst ans Ende noch einmal ein \T
damit werden auch Unterprozesse beendet... vllt ja auch das Icon entfernt.
 
Persönlich würde ich die System Tray für diesen einen Benutzer ausblenden (blendet allerdings auch die 'wichtigen' Programme aus):

-Ein RegDword 'NoTrayItemsDisplay' mit dem Wert 1 unter:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
erstellen
-Neustart

Jetzt sind die Icons ausgeblendet.

Oder mit AutoIT & Co. einen mousemove über die System Tray automatisiert laufen lassen (daß die Maus in regelmäßigen Abständen drüberbewegt wird).
Code:
mousemove(1725, 1180)
mousemove(1825, 1180)
mousemove(1725, 1180)
mousemove(1825, 1180)
mousemove(1725, 1180)
mousemove(1825, 1180)
sleep(300000)

//EDIT:
Oder recht umfangreiche Skripte
 
Zuletzt bearbeitet:
Schreibe doch einfach ein kleines AutoIt-Script.

1. Programmfenster in den Fokus holen.
2. ALT + F4 über die Tastatur senden.

Ergebnis ist, dass sich das Programm sauber beendet.
 
Hi

Ka was für ein Programm es ist, jedoch in der Regel gibt es ja auch einen Dienst dazu?
Wenn ja, kannst du via Skript auch einfach den dienst beenden, somit wäre die Software auch ausser gefecht.
 
Teiby hat Recht.
taskkill wäre schon richtig, allerdings darfst du wie gesagt den /f (force) switch nicht verwenden, sonst zieht Windows dem Prozess einfach den Boden unterden Füßen weg.

taskkill ohne /f sendet eine WM_CLOSE Message zum Prozess, genauso wie es z.B. auch ein Klick auf das X oben rechts im Fenster machen würde.
Dadurch bekommt der Prozess selbst die Chance aufzuräumen, was vermutlich auch dein Problem mit den Tray-Icons behebt.
 
Vielen Dank für die vielen Antworten, echt klasse von euch!

Werde mir die oben beschrieben Vorschläge mal genauer ansehen.

Das /F habe ich nun weggenommen, dadurch schließt sich das Programm jetzt leider überhaupt nicht mehr.

Sobald ich das /F einfüge, schließt es sich wieder.
 
pintness schrieb:
Ansonsten würde ich mich von den "toten Icons" nicht stören lassen. Das Programm wird ja beendet und belegt keine zusätzlichen Ressourcen ...

Also wenn ich dann irgendwann 10.000 icons habe, dann macht das nichts?
Ergänzung ()

N00bn00b schrieb:
Via Powershell:

Code:
Stop-Process -processname testprogramm*

Powershell Befehle bzw. Scripte können auch aus einer .bat Datei gestartet werden, siehe zB. https://stackoverflow.com/questions/19335004/how-to-run-a-powershell-script-from-a-batch-file

geht auch nicht, dass Programm schließt sich zwar, aber wie bei dem .bat Befehl bleibt das Symbol unten rechts (neben der Uhr) erhalten.
Ergänzung ()

smon2k schrieb:
oder du hängst ans Ende noch einmal ein \T
damit werden auch Unterprozesse beendet... vllt ja auch das Icon entfernt.

Danke für die Idee, damit bleibt das Symbol aber auch :-)

----------------------------------------------------------

mousemove(1725, 1180)
mousemove(1825, 1180)
mousemove(1725, 1180)
mousemove(1825, 1180)
mousemove(1725, 1180)
mousemove(1825, 1180)


Das hat funktioniert, vielen Dank!!!

Problem gelöst! Vielen Dank auch an alle anderen für die vielen Ideen! Letztendlich klappt es gut mit Autoit und den oben genannten Daten.
 
Zuletzt bearbeitet:
Was? Mousmove alleine hat gereicht? Ohne Klicken?

Schön, wenn es jetzt geht.

Falls Du viel wiederkehrende Handarbeit bei der Administration und keine Lust hast, Dich in die Powershell einzuarbeiten, dann könnte AutoIt Dein Ding sein.
 
papillon121 schrieb:
Also wenn ich dann irgendwann 10.000 icons habe, dann macht das nichts?
Ergänzung ()



geht auch nicht, dass Programm schließt sich zwar, aber wie bei dem .bat Befehl bleibt das Symbol unten rechts (neben der Uhr) erhalten.
Ergänzung ()



Danke für die Idee, damit bleibt das Symbol aber auch :-)

----------------------------------------------------------




Das hat funktioniert, vielen Dank!!!

Problem gelöst! Vielen Dank auch an alle anderen für die vielen Ideen! Letztendlich klappt es gut mit Autoit und den oben genannten Daten.
Kannst du mir das vielleicht mal Zeigen/schicken wie es hinbekommen hast?
 
Die Taskleiste hat mich bei einigen Projekten auch schon in den Wahnsinn getrieben. Dieses Ding rendert häufig nur neu, wenn eine Benutzerunteraktion erfolgt.

Anwendungen die automatisiert in den "Borderless Fullscreen"-Mode starten sollten, konnten sich unter bestimmten Umständen, einfach nicht über die Taskleiste schieben.
Egal wie viele Faxen man mit Foreground-Befehlen gemacht hat.

Es musste erst die Maus auf die Taskleiste geschoben werden, damit das Teil merkte daß es weg soll.

Von daher kann ich den Schmerz und diese Behelfslösung sehr gut verstehen 😄
 
Hier geht es um einen anderen Sachverhalt:
Ein Program, das in Windows im System-Tray (der Bereich mit den kleinen Icons auf der ganz rechten Seite der Taskleiste ) ein Symbol anzeigen lässt, muss dieses bei Beenden auch wieder manuell entfernen.
Ansonsten bleibt das Symbol dort stehen, bis der User abgemeldet oder der PC heruntergefahren/neugestartet wird.

Da Programme in den meisten Fällen ihr Tray-Symbol erst dann aus dem System-Tray manuell entfernen, wenn sie beendet werden, verbleibt das Symbol des Programm, wenn das Programm nicht ordnungsgemäß beedet wird oder werden kann. (Also, z.B. wenn es über den Taskmanager abgeschossen wird oder es einen Fehler erfährt und abstürzt.)

In diesem Fall sammelt man entweder die zugehörigen Tray-Symbole oder zwingt die Taskleiste zu einer Überprüfung, ob das entsprechende Programm des Tray-Symbols noch existiert.
Tut es das nicht, wird das Tray-Symbol entfernt.
Diese Überprüfung lässt sich u.a. mit einem Maus-Over über das Tray-Symbol forcieren.
 
Zuletzt bearbeitet: (Rechtschreibfehler)
Das mit dem Mousemove kommt mir auch Plausibel vor :)
Ich habe es schon oft gesehen, angefangen mit Vista, das Programme Amoklaufen und dutzende, wenn nicht hunderte Trausymbole erzeugen. Teilweise auch leere Icons, so das man dann eine riesen Flaeche hat in der die funktionierden Icons alleine da stehen.
Dann nimmt man einmal die Maus und faehrt mir ihr einmal in dem Bereich umher: Jedes Icon was beruehrt wird verschwindet.

Der Tray Bereich (der eigendlich nicht so heisst) ist aber sowieso sehr seltsam implementiert. Ich erinnere mich zu Vista oder 7 Zeiten an einen Bug, der dafuer gesorgt hat das einige Rechner keine Windows Updates vom WSUS holen wollten. Bis man dann hingegangen ist und immer alle Trayicons anzeigen laesst :D
 

Ähnliche Themen

Zurück
Oben