Was ist der richtige Weg, um Programme von der Kommandozeile aus zu schließen / zu beenden, ähnlich wie das Drücken der "X" -Schließtaste in der Fensterecke?
Ich versuche Chrome unter 3 verschiedenen Windows-Versionen zu schließen: win7 ultimate, win7 home, winXP
Unter Ultimate und XP: TSKILL chrome
Unter Zuhause TASKKILL /IM chrome.exe
TSKILL chrome
:
(Chrome wird geschlossen, keine cmd-Fehler,
aber Chrome-Fehler werden beim Neustart wiederhergestellt )
TASKKILL /IM chrome.exe
:
(Es schließt Chrome, keine Chrome-Fehler beim Neustart,
aber Fehler in Cmd: "Unmöglich, untergeordnete Prozesse zu beenden (ca. 4-5), nur mit Kraft /F
")
Sollte ich untergeordnete Cmd-Fehler ignorieren, wenn beim Neustart von Chrome keine Fehler angezeigt werden ?
windows
command-line
neoDev
quelle
quelle
Antworten:
Die richtige Art, ein Programm zu schließen / zu beenden, hängt letztendlich von der Software ab. Im Allgemeinen empfiehlt es sich jedoch, Windows-Programme zu schließen, wenn sie die Meldung WM_CLOSE erhalten. Speicher ordnungsgemäß freigeben und Griffe schließen. Es gibt andere Nachrichten, die das Schließen der Anwendung signalisieren können, aber es ist Sache des Autors der Software, wie mit jeder Nachricht umgegangen wird.
taskkill sendet die WM_CLOSE-Nachricht und es liegt dann an der Anwendung, ob sie ordnungsgemäß geschlossen werden soll. Möglicherweise möchten Sie auch die
/T
Option verwenden, um auch untergeordnete Prozesse zu signalisieren.Verwenden
/F
Sie diese Option nur, wenn Sie die Beendigung des Vorgangs erzwingen möchten.Zu den weiteren Optionen gehört das Senden der Alt + F4-Tasten mithilfe von PowerShell oder Anwendungen von Drittanbietern.
Update auf aktualisierte Frage
Ignoriere die Fehler. Chrome generiert viele Prozesse. Die Fehler werden verursacht, wenn ein Prozess die von TASKKILL gesendete WM_CLOSE-Nachricht nicht bestätigt. Nur Prozesse mit einer Nachrichtenschleife können die Nachricht empfangen. Daher wird dieser Fehler von den Prozessen generiert, die keine Nachrichtenschleife haben. Höchstwahrscheinlich handelt es sich bei diesen Prozessen um Chrome-Erweiterungen und -Plugins.
Um die Fehler auszublenden, erfassen Sie die Ausgabe
Zusammenfassung: TASKKILL ist die richtige Methode zum Schließen von Anwendungen über die Befehlszeile gemäß der WM_CLOSE-Implementierung und der von mir verknüpften Microsoft-KB .
quelle
>
ist der Redirect-Operator für die cmd.exe undnul
die Leere, in der Dinge nie wieder gehört werden.Versuchen NirCmd (Download: x86 x64 )
Es verfügt über den Befehl "closeprocess", mit dem Prozesse ordnungsgemäß geschlossen werden können. Gemäß seinem Dokument werden Apps nicht beendet, sondern
WM_CLOSE
an alle Fenster der obersten Ebene des Zielprozesses gesendet.Anwendungsbeispiel:
Wenn dies nicht funktioniert, hat Ihre Anwendung eine ungewöhnliche Bereinigungsprozedur. Ich würde gerne sehen, was im Inneren passiert. Bitte teilen Sie mir Ihre Zielanwendung mit.
quelle
Die Antwort auf diese Frage finden Sie
here
( Microsoft-Link ).Sie können
WM_CLOSE
Nachrichten an jedes Fenster senden , das Sie schließen möchten. In vielen Fenstern wirdWM_CLOSE
der Benutzer aufgefordert, Dokumente zu speichern.Ein Werkzeug, das dies richtig macht, ist
@Kill
. Siehe auch SendMsg .Ich weiß nicht, wie man das im Batch macht, aber Sie könnten das vbscript dafür verwenden. Simulieren der Alt+ F4Tasten (entspricht Signal
WM_CLOSE
).Führen Sie das folgende Skript aus und sehen Sie sich dessen Verhalten an.
Here
ist die Liste der Schlüsselnamen für SendKeys.Wenn Sie das Skript ausführen, ist der Editor geöffnet, einige Wörter werden geschrieben und anschließend wird ein Signal zum Schließen des Programms ausgegeben (siehe Abbildung unten).
Weitere Fragen
Kann ich ein minimiertes Programm oder einen Hintergrund mit vbscript starten?
Ja. Verwenden Sie den folgenden Code:
Weitere Informationen finden Sie im
Run Method
.Kann Chrome eine URL in VBScript aufrufen?
Wenn Chrome die Standardeinstellung ist, verwenden Sie:
Source
Gibt es eine Möglichkeit, den Fokus auf eine bestimmte Anwendung zu richten ( chrome.exe )?
Here
in einem Beispiel.Ich möchte ALT + F4 NUR an Chrome senden, unabhängig davon, ob ich mit anderen Fenstern arbeite.
Der folgende Code funktioniert unter Windows 8 .
quelle
Es gibt einige Befehlszeilendienstprogramme, die eine geeignete
WM_SYSCOMMAND
Nachricht (mitSC_CLOSE
als Befehl) an das Fenster der obersten Ebene eines Programms senden können . Ich bin sicher, dass in Kürze mindestens einer erwähnt wird. (Dann wird AutoIt von jemandem erwähnt. Dann wird eine Antwort angezeigt, wie es mit PowerShell und ausgeführt wirdCloseMainWindow()
.)Das Befehlszeilendienstprogramm, das als integrierter Befehl im TCC von JP Software , einem Befehlsinterpreter und Befehlsskriptprozessor für Windows, enthalten ist, wird aufgerufen
TASKEND
.quelle
Okay, ich werde nicht lügen. Ich habe dies beim Stackoverflow gesehen und dachte, es sei eine herausfordernde Frage. Soooo, ich habe gerade die letzten 2 Stunden damit verbracht, Code zu schreiben. Und hier ist es ....
Nachdem Sie die folgenden Schritte ausgeführt haben, können Sie "TaskClose notepad.exe" eingeben, nachdem Sie auf "Start" geklickt haben. Alle undokumentierten Notepad-Dateien werden automatisch auf dem Desktop gespeichert. Es wird chrome.exe automatisch schließen und die Wiederherstellungseinstellungen speichern.
Sie können unter den Bedingungen if zusätzliche Einstellungen für andere Anwendungen hinzufügen und entfernen. Zum Beispiel:
Die vbs- und Batchdateien führen die folgenden Prozeduren aus:
ReturnAppList.bat: Installation unter "C: \ windows \ system32 \"
TaskClose.bat: Installation unter "C: \ windows \ system32 \" UND "C: \ Users \ YourUserName \"
TaskClose.vbs: Installation unter "C: \ windows \ system32 \"
Es hat viel Spaß gemacht, darüber zu schreiben, und ich freue mich mehr, es zu beenden, als die Antwort tatsächlich zu zeigen. Hab eine großartige Woche!
quelle