aguardar o sistema ficar disponível

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

Moderator: Gio

DVD
Posts: 1
Joined: 08 Sep 2020, 20:21

aguardar o sistema ficar disponível

08 Sep 2020, 20:48

Gostaria de uma ajuda em um script.

o contexto é o seguinte: após realizar uma pesquisa dentro de um programa tenho que aguardar o resultado para, em seguida, realizar outros comandos. Mas a resposta desse programa varia conforme a quantidade de itens pesquisados (a resposta pode demorar de 1 segundo a 2 minutos, em média)
Enquanto o sistema está pesquisando os itens, ele não responde nenhum outro comando, chegando a mudar o mouse para um circulo que, nas versões anteriores do windows, era uma ampulheta... ou seja, o sistema entende que está processando uma informação.

A questão é: existe alguma possibilidade de usar esse status de "processando uma informação" para melhorar meu script e não ficar tentando a sorte com o comando "sleep" ??

Desde já agradeço a atenção! :thumbup:
User avatar
Hologram
Posts: 126
Joined: 06 May 2020, 16:47

Re: aguardar o sistema ficar disponível

09 Sep 2020, 08:52

Provavelmente depois que o programa faz a pesquisa deve setar alguma outra coisa, tipo, 'Done Search', coloca no imagesearch pra procurar isso e quando encontrar executar o resto do script
Discord: Npc Bugado#9074



local config = {
delrey = getPlayerCarValue(cid, DELREY),
cigarro = getPlayerCancer(cid, DERBY),
prostituta = getPlayerAIDS(cid, cracuda),
tresOitao = getPlayerRevorvi(cid, 38)
}
if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end


User avatar
Gio
Posts: 1060
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: aguardar o sistema ficar disponível

09 Sep 2020, 11:40

Bom dia DVD.

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

Você pode fazer conforme o Hologram disse.

No caso de programas de escritório, normalmente a tela em questão também atualiza uma tabela ou outros campos quando conclui cada busca. Você pode obter o conteúdo de um campo qualquer de uma tela usando ControlGet e ControlGetText. Sendo assim, veja quais campos são atualizados quando a busca termina e crie uma espécie de loop que verifica o campo a cada 2 ou 3 segundos, condicionando um break ao resultado do campo ser aquele que se espera após o final da busca. Caso as buscas sejam efetuadas em sequencia (de forma que o campo já teria alguma informação antes de uma busca ser concluída), você pode primeiro salvar o conteúdo do campo, depois efetuar a busca, e daí fazer o loop ficar puxando a informação do campo em loop até que a informação seja alterada pelo programa. Também é possível criar um timeout (tempo máximo de espera) para o caso de situações inesperadas ocorrerem (por exemplo quando a busca resulta em erro e aí os campos não mudam seus valores).

Todas essas recomendações são um pouco genéricas porque a automação de telas de programas terceiros é um trabalho bastante caso-específico. Se você nos der imagems (prints) da tela em questão, tanto antes da busca como durante e depois, e mais alguns elementos como o ClassNN dos controles (que pode ser obtido através do WindowSpy), talvez possamos esboçar um código para que você adapte melhor e teste. Do contrário, é impossível que possamos prever com exatidão quais comandos ou parâmetros serão melhor indicados para resolver a questão.

Espero ter ajudado, se ainda tiver alguma dúvida, basta postar abaixo :thumbup:

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 2 guests