Como posso fechar o pidgin via comando?

0

O problema foi descrito no link .

No Linux, posso pedir que pidgin feche via pkill pidgin ou kill [pid] . O programa cuidará disso e se desligará. O Windows não funciona dessa maneira. Um sinal WM_CLOSE só fecha a janela, não o processo (assim como quando você atinge o x ).

Como faço para fechar o pidgin via comando?

Motivação : parece que muitos servidores XMPP precisam que os clientes digam "adeus" ativamente para perceber que estão off-line. Em outras palavras, não há keep-alive pacotes necessários ou não há timeouts (e se, bastante atrasado). Geralmente, isso não é um grande problema, porque iniciamos e saímos de nossos clientes de acordo (contando o desligamento como saindo). No entanto, se alguém entrar no modo suspend / hibernate , é como se a conexão de rede tivesse desaparecido repentinamente - não há chance de o pidgin dizer "ei, ficando offline". Então, eu preciso de um script para fechar automaticamente o pidgin graciosamente (para ser executado diretamente antes de suspender).

    
por Blauhirn 03.06.2017 / 05:58

2 respostas

0

Aqui está um script AutoHotkey que emula as seguintes etapas do usuário:

  • Abra a janela principal, se ainda não estiver aberta
  • Envie Ctrl - Q para que o pidgin seja encerrado

.

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
        }
    }
}
    
por 03.06.2017 / 05:58
0

O utilitário que você quer é taskkill.exe , que é um programa de linha de comando embutido no sistema operacional Windows (mais ou menos análogo a kill em sistemas semelhantes ao Unix) e encontrado no diretório do sistema (C: \ Windows \ System32 \ taskkill.exe). Por padrão, ele pede (mas não força) programas para sair e não usa mensagens de janela.

Execute taskkill /? de um shell de linha de comando ( cmd ou powershell ) para obter informações de uso, mas o comando básico desejado é taskkill /im pidgin.exe (observe que a extensão é necessária no nome da imagem do programa mate). Não NÃO passe o /f flag aqui, pois isso forçará o encerramento do programa (análogo a kill -9 ) sem dar tempo para executar qualquer limpeza (embora isso seja útil para programas que você quer matar imediatamente, ou que estão suspensos e não respondem a solicitações de fechamento normais).

Fazer isso funcionar automaticamente no logoff pode ser complicado; considere o uso do Agendador de Tarefas.

    
por 03.06.2017 / 07:28