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

Hallo zusammen
Auch wenn der Post etwas älter ist: ich bin über die Googlesuche wegen eines ähnlichen Anliegens darüber gestolpert und habe eine Anmerkung für zukünftige Finder:

Wie bereits erwähnt, ist es ein völlig normales Verhalten, dass TrayIcons nicht verschwinden, wenn ein Prozess abgeschossen wird. Erst beim Maus-Hover (mit dem Cursor darüberfahren) aktualisiert sich der Tray-Bereich.

Einen Prozess zu killen ist immer unschön und sollte so vermieden werden, wo immer möglich, weil: beim normalen Schliessen eines Programmes laufen noch diverse Vorgänge im Hintergrund. Z. B. werden gesetzte Einstellungen in die Registry oder Config-Dateien geschrieben, temporäre Dateien werden bereinigt. Beim Taskkill geschieht das nicht.

Long story short: wenn Ihr eh schon AutoIT verwendet, nutzt es nicht um die Symptome des Taskkills zu beheben, sondern schliesst das Programm gleich sauber.

Am Beispiel von einem geöffneten Notepad-Fenster mit anschliessender Abfrage zum Speichern:

Opt("WinTitleMatchMode", 2) ;in der nächsten Zeile wird nach dem Fenstertitel gesucht. Ohne diese Option muss die Suchanfrage mit dem Anfang des Fenstertitels übereinstimmen
WinClose(" - Editor") ;Das Fenster, das " - Editor" enthält, wird geschlossen
WinWait("Editor", "&Speichern") ;Warte auf das Fenster mit "Editor" im Titel und "&Speichern" im Fenstertext
ControlClick("Editor", "&Speichern", "Button2") ;klicke auf den Knopf "Button2" (Nicht speichern) im Fenster mit "Editor" im Titel und "&Speichern" im Fenstertext
Exit
 
Für komplexere Sachen würde ich auch Autoit nehmen, aber für einfaches Schließen von Fenstern kann man es erst mal mit NirCMD.exe probieren.

Falls ein Programm buggy ist und seine Icons beim Beenden nicht selbst aufräumt, oder gelegentlich abstürzt, kann man zur Not explorer.exe selbst mit taskkill beenden. Von einem regelmäßigen Ablauf per Batch würde ich aber absehen, wer weiß ob sonst nicht mal was auf der Strecke bleibt.
 

Ähnliche Themen

Zurück
Oben