Fokussiertes Programm über die Befehlszeile schließen

Fokussiertes Programm über die Befehlszeile schließen

Gibt es eine Möglichkeit, ein aktuell fokussiertes Programm über die Befehlszeile zu schließen?

Ich führe ein Sprachsteuerungsprogramm aus, das im Hintergrund Befehle ausführt. Die einzige mir bekannte Möglichkeit, dies zu tun, ist mit dem taskkillBefehl, bei dem ich einen bestimmten Prozessnamen eingeben muss. Ich möchte, dass der Prozess beendet wird, der gerade im Fokus ist. Wenn also Firefox im Fokus ist, wird dieser beendet, und wenn Notepad im Fokus ist, wird dieser beendet.

Ich verwende Win 10, falls das relevant ist.

Antwort1

Leider gibt es keine Verbindung zwischen der Befehlsumgebung und der GUI. Wenn Sie taskkilleine Anwendung beenden, handelt es sich dabei umVerfahren, nicht das Fenster. Dies ist ein wichtiger Unterschied, denn wenn Sie einen Prozess beenden, tun Sie dies mit Gewalt; genauso, als ob er abgestürzt wäre. Dies ist wahrscheinlich nicht das, was Sie die meiste Zeit tun möchten.

Normalerweise schließt das Drücken von Alt+ das aktuell fokussierte Fenster ( oder ein Dialogfeld). Diese Tastenkombination entspricht der Auswahl von Datei -> Beenden in der Menüleiste oder dem Klicken auf die Schaltfläche Schließen in der Titelleiste.F4Esc

Um dies von einer Eingabeaufforderung aus zu tun, benötigen Sie ein Skript, das das aktive Fenster identifizieren und ihm Tastenanschläge senden kann. Dies kann mit PowerShell erfolgen. Der Windows Script Host (also VBScript oder JavaScript) kann dies ebenfalls. Dafür wären jedoch einige Programmierkenntnisse erforderlich. Programme wie AutoHotKey oder KiXtart sind eine weitere Option.

Grundsätzlich rufen Sie das Skript von der Befehlszeile über Ihr Sprachsteuerungsprogramm auf.

Beachten Sie, dass die Anwendung ihre normale Schließroutine ausführt (Sie z. B. auffordert, Ihre Arbeit zu speichern usw.). Es handelt sich also nicht um eine erzwungene Beendigung im üblichen Sinne taskkill.

Antwort2

Gibt es eine Möglichkeit, ein aktuell fokussiertes Programm über die Windows-Shell zu schließen?

Dies ist nicht möglich, da Sie zum Eingeben eines Befehls in der Windows-Shell den Fokus auf die Shell umschalten müssen.

Das zuvor fokussierte Programm (Fenster) verliert den Fokus.

Soweit ich weiß, gibt es keinen Windows-Shell-Befehl, der dasvorherfokussiertes Programm.

Antwort3

AutoItkann es tun. Nur ein paar Befehle. Suchen Sie nach:

$pid=WinGetProcess([ACTIVE])
ProcessClose($pid)

verwandte Informationen