Wie kann ich pidgin per Kommando schließen?


0

Das Problem wurde unter https://developer.pidgin.im/ticket/9698 beschrieben .

Unter Linux kann ich pidgin bitten , über pkill pidginoder zu schließen kill [pid]. Das Programm kümmert sich dann darum und fährt sich selbst herunter. Windows funktioniert so nicht. Ein WM_CLOSESignal schließt nur das Fenster, nicht den Prozess (genau wie wenn Sie sich selbst treffen x).

Wie schließe ich Pidgin per Befehl?

Motivation : Anscheinend müssen sich viele XMPP-Server von den Clients aktiv verabschieden, um zu erkennen, dass sie offline sind. Mit anderen Worten, es werden keine keep-alivePakete benötigt oder es gibt keine Zeitüberschreitungen (und wenn, ziemlich verzögert). In der Regel ist dies kein großes Problem, da wir unsere Clients entsprechend starten und beenden (Herunterfahren wird als Beenden gezählt). Wenn man jedoch in den Modus suspend/ wechselt hibernate, ist es so, als wäre die Netzwerkverbindung plötzlich unterbrochen worden - keine Chance für Pidgin, "hey there, going offline" zu sagen. Also, ich brauche ein Skript automatisch schließen Pidgin anmutig (ausgeführt direkt vor Aussetzung).

Antworten:


0

Hier ist ein AutoHotkey-Skript, das die folgenden Benutzerschritte emuliert:

  • Hauptfenster öffnen, falls noch nicht geschehen
  • Senden Ctrl- Qdamit pidgin aufhört

.

pidginMainWindowTitle := "Buddy List"

process, exist, pidgin.exe
if(ErrorLevel!=0) {
    ; Pidgin process is running -> close it
    if(!winExist(pidginMainWindowTitle)) {
        ; ..but main window is not.
        ; determine full pidgin path
        winGet, pidginPath, ProcessPath, ahk_exe pidgin.exe
        if(pidginPath=="") {
            msgbox, Process path empty?
            exitapp
        }
        ; run pidgin again: will open main window
        run %pidginProcessPath%
        ; wait for the window max. 2 seconds
        winWait, %pidginMainWindowTitle%,, 2
        if(ErrorLevel==1) {
            msgbox, Couldn't start main window
            exitapp
        }
        ; send exit key combo to pidgin main window
        controlSend,, ^q, %pidginMainWindowTitle%
        ; wait for the process to close max. 2 seconds
        process, WaitClose, pidgin.exe, 2
        if(ErrorLevel) {
            msgbox, Couldn't exit pidgin gracefully
            exitapp
        }
    }
}

0

Das gewünschte Dienstprogramm taskkill.exeist ein Befehlszeilenprogramm, das in das Windows-Betriebssystem integriert ist (ungefähr analog zu killUnix-ähnlichen Systemen) und sich im Systemverzeichnis (C: \ Windows \ System32 \ taskkill.exe) befindet. Standardmäßig werden Programme zum Beenden aufgefordert (aber nicht dazu gezwungen), und Fenstermeldungen werden nicht verwendet.

Führen Sie taskkill /?eine Befehlszeilen-Shell ( cmdoder powershell) aus, um Informationen zur Verwendung zu erhalten. Der grundlegende Befehl, den Sie benötigen, lautet jedoch taskkill /im pidgin.exe(beachten Sie, dass die Erweiterung für den Namen des abzubrechenden Programms erforderlich ist). Übergeben Sie hier NICHT das /fFlag, da dies das Programm (analog zu kill -9) zwangsweise beendet, ohne ihm Zeit für eine Bereinigung zu geben (obwohl dies für Programme nützlich ist, die Sie sofort beenden möchten oder die hängen bleiben und nicht normal reagieren) Anfragen schließen).

Es kann schwierig sein, dies beim Abmelden automatisch auszuführen. Ziehen Sie die Verwendung des Taskplaners in Betracht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.