Dúvida para Implementar Ideia

É verdade, você já havia falado que estava usando Mouse Record Pro em conjunto, eu não tinha percebido que isso seria importante rs. Bem, já que o Clicador será ativado por um botão na Janela dele, vou remover o JNativeHook dele e assim ele vai parar de funcionar ao Teclar Enter, vai funcionar só por Click no Botão dele, ok?

Para o Clicador conseguir reconhecer o botão “Imprimir Capa” vou precisar que você me envie um recorte deste Botão estando habilitado (roxo mais forte, quando ele fica clicável, logo após selecionar uma checkbox). Faça esse recorte tirando um PrintScreen da tela, colando no Paint, e cortando no Paint mesmo, como eu expliquei para fazer com a “partedecheckbox.png”.

Sobre limpar a checkbox selecionada, faça esse teste: selecione uma checkbox e experimente dar um F5 para atualizar a página e veja se a checkbox selecionada é limpa.

Se isso não funcionar, provavelmente o Clicador vai precisar clicar na checkbox para deselecioná-la. A forma mais fácil de implementar seria fazer o Clicador guardar as coordenadas X e Y da checkbox que ele clicou, e clicar nessas mesmas coordenadas logo após clicar em “Imprimir Capa”; mas para isso funcionar a checkbox não pode mudar de lugar após clicar em “Imprimir Capa”, e eu acho que ela vai mudar de lugar porque o Chrome faz aparecer uma faixa de downloads em andamento no fim da janela dele:


Veja se a checkbox aí mudará de lugar. Se essa barra já estivesse visível antes de toda a execução do Clicador, provavelmente a Checkbox não mudaria de lugar e essa implementação daria certo.

A melhor forma de fazer, e um pouco mais trabalhosa, é fazer o Clicador buscar pela(s) Checkbox(es) Seleciona(s) na Área-de-Checkboxes e clicar nela(s). Para fazer isso, vou precisar que você também me envie um recorte de uma checkbox selecionada (✓), feito com PrintScreen->Paint também, para que nenhum pixel seja alterado.

Fiquei com dúvidas sobre o que ocorre após clicar em “Imprimir Capa”:

  1. Um Download começa, mas como um programa irá saber quando esse Download terminou para poder dar continuidade aos processos sem intervenção humana? É o Mouse-Pro que será o responsável por detectar quando o Download terminar e por dar continuidade ao trabalho automaticamente?
  2. O Atalho Ctrl+P é feito automaticamente, mas ele é feito na Janela do Chrome? Se sim, isso abre uma tela para configurar a impressão que tem um botão “Imprimir”, será o Mouse-Pro que fará o “Ctrl+P” e que clicará nesse botão “Imprimir”? Se sim, você já verificou se esse botão “Imprimir” sempre aparecerá no mesmo lugar da Tela para que o Mouse-Pro sempre consiga clicar nele?
    2.1 Na verdade, eu imagino que o que você deve ter feito é isso: Após o Download terminar você configurou o Chrome para “Sempre abrir arquivos deste tipo” ou está usando o Mouse-Pro para abrir o Arquivo, e, com o Arquivo aberto (não sei se é imagem, PDF, ou outro) o Mouse-Pro faz o “Ctrl+P” para abrir o diálogo de impressão do programa que abriu o arquivo (Visualizador-de-Imagens/Visualizador-de-PDFs?), e, o prórprio Mouse-Pro clica em imprimir. é isso? Bem, se é isso, você verificou se o Mouse-Pro sempre conseguirá fazer tudo isso sozinho?

image

Essas dúvidas são importantes porque, se o Mouse-Pro não for capaz de automatizar esses processos o Clicador precisará ser, aí tenho que ter em mente o que ele precisará fazer para prepará-lo pra isso.

1 curtida

Encontrei uma extensão no Chrome que pode ser usada (talvez até pelo Mouse-Pro) para desmarcar todas as checkbox, veja o que você acha:

image

1 curtida

Belezinha Douglas, pode desabitar sim a tecla Enter para seleção do Checkbox.

Segue o recorte, fiz dentro e ele por completo.

ImprimirCapaCompleta

ImprimirCapaDentro

Sobre o limpar a Checkbox pode desconsiderar, eu testei o F5 mas o Mouse Pro se perde, porem verifiquei um botão no sistema que consigo limpar, ele não muda de lugar e vai funcionar bem.

  1. Um Download começa, mas como um programa irá saber quando ele terminou para poder dar continuidade aos processos sem intervenção humana? É o Mouse-Pro que será o responsável por detectar quando o Download terminar e por dar continuidade ao trabalho automaticamente?

Não havia pensado nesse ponto, mas pelo teste que fiz é cerca de 5 segundos para o arquivo abrir, não é pesado, o meu Chrome eu habilitei para abertura do documento direto com o Adobe, então ele não tem aquela faixa de download do Chrome, porem acho que corro um risco aqui talvez, mas seguro o Mouse Pro por 5 segundos de espera e depois aciono o Ctrl+P, essa seria minha ideia.

  1. O Atalho Ctrl+P é feito automaticamente, mas ele é feito na Janela do Chrome? Se sim, isso abre uma tela para configurar a impressão que tem um botão “Imprimir”, será o Mouse-Pro que fará o “Ctrl+P” e que clicará nesse botão “Imprimir”? Se sim, você já verificou se esse botão “Imprimir” sempre aparecerá no mesmo lugar da Tela para que o Mouse-Pro sempre consiga clicar nele?

Exatamente isso,todo o processo será conduzido pelo Mouse Pro, quando eu clicar Imprimir Capa, ira abrir direto a pagina do Adobe Reader maximizada e não aquela barra do download do Chrome, a janela é fixa nesse procedimento até clicar imprimir que é o final do processo, testado com o Mouse Pro, ele consegue. rss

Douglas muito interessante a extensão, já instalei funciona lindamente, vou usar. :smiley:

Eu estava vendo sobre um Mouse Recorder aqui, não sei se é o seu, veja:
http://www.mouserecorder.com/docs/09/manual.htm

diz haver a opção de fazer o programa esperar até um pixel da tela assumir determinada cor:

Acho que você poderia usar essa opção para esperar o Adobe Reader abrir, fazendo o programa detectar um dado pixel da tela que muda de cor quando o Adobe Reader abrir. Experimente testar isso.

Funcionaria assim:

  1. O Mouse-Recorder clicaria no Botão do Clicador ativando-o, e então fica aguardando aparecer o pixel do Adobe Reader;
  2. O Clicador clica na Checkbox e no botão “Imprimir Capa”, o Chrome faz o Download e então abre o PDF no Adobe Reader;
  3. O Mouse-Recorder percebe o pixel do Adobe Reader e executa os comandos de Impressão (Ctrl+P, etc.)

E depois disso? o Mouse-Recorder vai conseguir fechar o Adobe Reader deixando tudo pronto para reiniciar todo o processo?

Testa aí, vamos ver se ele consegue. :smiley:

Esse parece bem mais completo e inteligente, o que uso é o Mouse Record Pro eles são diferentes, não sei se ele possui essa função. Vou dar uma analisada depois … Já sai da empresa agora, vou baixar esse que enviou e conseguindo instalar la eu faço o teste pela manhã e já te conto como foi, Isso seria ótimo , porque em caso de uma página não abrir entendo que ele pause por motivo do pixel não ser identificado, ou vai se perder mesmo. Rss
Com o Mouse Pro que uso, ele consegue sim fechar o Adobe e reiniciar o processo, so não tenho como mensurar o exato tempo do download, no caso quando a página do Adobe abre.

Bem, alterei o Clicador para ele conseguir clicar no Botão Imprimir, mas não testei aqui.

Também adicionei um Arquivo de Configurações, dentro da pasta src; você vai poder alterar a posição e tamanho da Janela do Clicador, e as demais configurações. Você pode adicionar comentários nesse arquivo se a linha deles começar com //, assim:

//Esta é uma linha de Comentário
IMAGEM_DE_UMA_CHECKBOX: "src/images/partedecheckbox.png"
IMAGEM_DO_BOTAO_IMPRIMIR: "src/images/botaoimprimir.png"
//Este é outro Comentário
COR_DA_SELECAO_RED: 255
COR_DA_SELECAO_GREEN: 150
   //Essa linha não começa com // pois começa com espaços, o programa pode "bugar" por causa disso.
COR_DA_SELECAO_BLUE: 50

ClicadorDeCheckbox.zip (16,0 KB)

1 curtida

Bom dia. :grin:

Vou testar e jaja te conto, muito mas muito obrigada mesmo. Não faz idéia do quanto esta me ajudando. Que Deus te abençoe muito e sempre.

Douglas,

Duvida: Como o botão Imprimir Capa vai funcionar, automático apos selecionar o Checkbox?

Sim, após clicar na checkbox ele já vai clicar no Botão “Imprimir Capa”, não tem nenhum delay também.

1 curtida

Humm, entao não funcionou, o que pode ser, faz idéia? Ele só ta selecionando a Checkbox, mas não acionou o botão Imprimir.
Não sei se daria mais trabalho, mas se tivesse junto ao botão Checkbox o botão Imprimir Capa eu poderia acionar com o Mouse também, acho que automático se ele clicar errado é um problema apesar de mais prático.
Obrigada.

Se não clicou no botão “Imprimir Capa” provavelmente foi porque ele não identificou o botão.

Você pode tentar fazer um novo recorte do botão e substituir a imagem “botaoimprimir.png” com esse novo recorte; pode até tentar recortar uma área menor para aumentar as chances de match.

Também pode ser um problema na configuração da Área-do-Botão, verifique se o botão fica dentro dessa área (veja o arquivo de configurações para saber a posição e tamanho dessa área).

O Clicador não está buscando pela cor roxa do botão, está analisando os pixels do botão o que inclui os pixels do texto dentro dele. Por causa disso, ele não vai clicar no botão errado, o que pode acontecer é ele não clicar, como ocorreu.

Se não for um desses problemas de configuração, deve ser problema na lógica dele, aí vou ter que dar um jeito de testá-lo aqui.

1 curtida

Entendi, vou testar um novo recorte e te aviso se funcionou. :wink:

Pelos testes que fiz aqui, funciona quando se aumenta o valor de AREA_DO_BOTAO_IMPRIMIR_WIDTH: para uns 300 ou mais:

AREA_DO_BOTAO_IMPRIMIR_WIDTH: 300

Não sei porque, com um width menor o botão já era capturado por completo.

de qualquer modo, você pode experimentar aumentar o WIDTH e o HEIGHT, e, diminuir o valor de AREA_DO_BOTAO_IMPRIMIR_X e de AREA_DO_BOTAO_IMPRIMIR_Y.

Desde que você tenha um recorte “botaoimprimir.png” que contém o texto “Imprimir Capa” sem estar cortado, o Clicador não irá clicar no botão errado.

Tenha em mente que a AREA_DO_BOTAO_IMPRIMIR não pode ficar maior que a tela (veja a resolução da sua tela), se não vai lançar uma exception após clicar na checkbox e vai finalizar sozinho. Nenhum dos valores de AREA_DO_BOTAO_IMPRIMIR podem ser negativos.

Hum… no teste que fiz aqui, mudando as configurações ele funcionou para 2 das três imagens “print-screen” que você havia me mandado, não funcionou para aquela em que o botão fica bem mais em baixo.

Se alterar as configurações não resolver, será necessário alterar a forma como o Clicador procura pelo botão.

Douglas,

Aqui não consegui, a não ser que estiver fazendo da forma errada.
Me manda a imagem e a configuração que esta usando pra que eu teste aqui.

Obrigada.

Qual a resolução do seu monitor aí? 1600x900?

Dá pra colocar pra buscar o botão em toda a tela, seria assim:

AREA_DO_BOTAO_IMPRIMIR_X: 0
AREA_DO_BOTAO_IMPRIMIR_Y: 0
AREA_DO_BOTAO_IMPRIMIR_WIDTH: 1600
AREA_DO_BOTAO_IMPRIMIR_HEIGHT: 900

Com essa configuração ele conseguiu encontrar o botão nas 3 imagens print-screen que você havia me mandado. Só que eu estou utilizando uma imagem do botão desabilitado, porque nas imagens que você me mandou esse botão estava desabilitado.

Isso mesmo 1600x900.

Tenta com as cofigurações que passei acima (editei a resposta de cima após você respondê-la), e com o recorte do interior do botão feito no Paint como havia explicado, se isso não funcionar:

  • tenta rolar a página e clicar no botão do Clicador para ver se com o botão “Imprimir Capa” em uma nova posição ele detecta, tente isso algumas vezes. Talvez os pixels do botão “Imprimir Capa” mudem ao rolar a página, talvez por questões renderização (mas acho pouco provável).

No fim, se não der certo mesmo, vou ter que tentar outra coisa no algoritmo do Clicador.

Já baixei essa imagem.

Descobri +1 bug aqui na lógica do clicador:

Ele tira um printscreen antes de clicar na checkbox, e não tira um novo para procurar pelo botão “Imprimir Capa”, por isso, se o botão “Imprimir Capa” estava desabilitado antes do Clicador clicar na checkbox, ele não encontrara esse botão.

Você pode testar isso de duas formas:

A) clique em uma checkbox qualquer para habilitar o botão “Imprimir Capa”, depois selecione com Ctrl+F o número de outra checkbox e clique no botão do Clicador para que ele marque essa outra checkbox. O clicador deverá ser capaz então de clicar no botão “Imprimir Capa” porque ele estava habilitado no momento em que você acionou o Clicador.

B) Substitua a imagem “botaoimprimir.png” por um recorte do botão “Imprimir Capa” desabilitado, como esse:btdesabilitado, o Clicador irá então procurar pelo botão desabilitado na imagem que ele capturou enquanto esse botão ainda estava desabilitado.

Continue usando essas configurações:

AREA_DO_BOTAO_IMPRIMIR_X: 0
AREA_DO_BOTAO_IMPRIMIR_Y: 0
AREA_DO_BOTAO_IMPRIMIR_WIDTH: 1600
AREA_DO_BOTAO_IMPRIMIR_HEIGHT: 900

Depois vou tentar corrigir esses bugs, assim que tiver um tempo.

Obs: você precisa excluir suas respostas com imagens, apenas remover a imagem da resposta irá fazer com que a imagem continue no histórico de edições.

1 curtida

Douglas,

Muito obrigada viu, e desculpa todo o trabalho, amanha vou testar as alternativas e te aviso.
Obrigada por avisar das imagens também, vou excluir aqui. :blush: