Encerrar AHK Script Topic is solved

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

Qhimin
Posts: 16
Joined: 30 Nov 2020, 19:24

Encerrar AHK Script

Post by Qhimin » 02 Dec 2020, 12:38

Fala galera, tudo certo?

Eu estou com a seguinte situação:

Tenho um script AHK executando e preciso que outro script AHK encerre o primeiro.
Tentei fazer isso através do processo mas aí acaba encerrando todos os scripts que estão rodando.

Existe alguma forma de fazer isso?

Desde já agradeço!
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Encerrar AHK Script  Topic is solved

Post by Gio » 03 Dec 2020, 09:43

Bom dia Qhimin.

Seja bem-vindo ao fórum da comunidade do AutoHotkey.

Existem várias formas de fazer isso que você descreveu. De um modo geral, você precisa coletar o PID de cada script específico e depois fechar somente os que quiser pelos PIDs especifícios deles. Para fazer isso você pode por exemplo:

1. Usar o comando Run para abrir um novo script (existe um parâmetro que guarda o PID do programa aberto pelo comando Run)
2. Fazer cada script abrir uma janela específica (que pode estar escondida) e depois usar o comando WinGet para obter o PID através do nome das janelas alvo.
3. Compilar cada script e colocar um nome diferente (o nome do processo é o nome do executável, então quando o script for compilado, você poderá escolher o nome do processo dele) de modo a poder obter o PID através do comando Process.
etc...

Eu vou te dar um exemplo de como eu faria a rotina acontecer pela opção 2, pois pelo que entendi, você quer que um SEGUNDO script feche o primeiro (logo, ele tem que poder ser executado depois, o que impede o uso da opção 1) e também quer fazer isso com scripts em texto (e não com programas compilados).


Script 1: Coloque esta linha no início do script 1 para que ele crie uma janela oculta com o nome específico EXEMPLO_DE_JANELA_NOVA:

Code: Select all

Gui, New, , EXEMPLO_DE_JANELA_NOVA

Script 2: No exemplo abaixo, o segundo script vai ser executado DEPOIS do primeiro, e com as linhas abaixo ele vai coletar o PID do primeiro através do nome da janela oculta e em seguida encerrará o primeiro (a rotina foi colocada na hotkey F2 para você poder controlar o momento do fechamento do primeiro script)

Code: Select all

F2::
DetectHiddenWindows, On ; Necessario para que o comando WinGet possa encontrar a janela oculta do script 1.
WinGet, PID_PRIMEIRO_SCRIPT, PID, EXEMPLO_DE_JANELA_NOVA
Process, Close, %PID_PRIMEIRO_SCRIPT%
Return

:arrow: Execute o script 1 e DEPOIS execute o 2. Quando ambos estiverem em execução, basta apertar F2 e o script 2 irá encerrar o script 1.

Espero ter ajudado, se ainda tiver alguma dúvida sobre o tópico, basta postar abaixo.
Post Reply

Return to “Ajuda e Suporte Geral”