Como rodar seu programa dentro de outro

11 respostas
S

Olá gostaria de saber se teria como rodar um programa feito por mim dentro de um outro como o paint por exeplo

11 Respostas

TerraSkilll

Não, a menos não de um jeito trivial. Você precisar alterar o executável original ou algo parecido, e isso não é fácil.

Se for outro programa do qual você tem algum controle (ex: tem o código fonte) poderia ser um pouco mais fácil, mas depende dos seus objetivos.

O que você quer fazer exatamente? Talvez fique mais fácil se você explicar qual seu objetivo, que programa deseja afetar e o motivo por trás disso.

Abraço.

S

estava pretendendo criar um botão que automaticamente cria-se uma linha no paint

TerraSkilll

Um jeito seria usando a classe Robot. Com ela, você pode simular cliques do mouse e pressionamento de teclas. Dá um bocado de trabalho porque você tem que dar comandos exatos (ex: mova o mouse para a posição x = 10, y = 37, clique com o botão direito, digite a letra “a”, pressione enter, …).

Se o que você quer é gerar uma imagem qualquer com uma linha desenhada (ou mesmo outras formas), pode fazer isso diretamente via Java, usando Java2D, por exemplo. Você pode desenhar num BufferedImage e salvar em formatos como btmp, png e jpeg.

Abraço.

S

mas como eu faria isto dentro de um outro programa como o paint ?

TerraSkilll

Como disse anteriormente, um dos jeitos seria usando a classe Robot. Você abre o Paint, abre o arquivo e executa o seu programa, que vai operar sobre o Paint.

O Paint pode operado com cliques (como quase todo programa) e a classe Robot permite simular cliques. Cabe a você programar onde o mouse deve clicar. Para avaliar o progresso, você pode tirar um print e comparar uma imagem anterior com a atual.

Se o que você quer é uma explicação detalhada, seria muito longa. Praticamente teria de fazer esse programa pra você, e não acho viável essa abordagem. Vai ter que por a mão na massa, entender como Robot funciona, e um pouco de manipulação de imagens.

Mas uma dúvida permanece: por que você quer fazer isso dentro de outro programa? O que espera obter usando essa técnica? Por que te interessam os cliques do mouse?

Abraço.

S

Oi muito obrigado pela ajuda com meu problema estou interessado nesse assunto pois pretendo usar futuramente para resolver problemas e usei o paint como exemplo ,mas também pretendo aplicar no google e em demais programas
e gostaria de saber mais uma coisa como você sitou que essa técnica séria muito trabalhosa teria alguma outra forma de fazer isso ,mas de forma menos trabalhosa?

Obrigado pela ajuda

D

Se você está falando do Chrome ou de páginas WEB, pode ser mais fácil: Você pode criar uma Extensão para o Chrome (que exige conhecimentos de HTML, Javascript, e talvez de outras tecnologias comuns no desenvolvimento web), e, sua extensão poderá ser capaz de ler a página mostrada ao usuário e alterá-la, de modo que você pode fazer muita coisa com essa página sem ser muito difícil.

TerraSkilll

Se o que você quer é controlar um programa qualquer (Paint, Chrome, Word, Photoshop, Windowns Media Player, etc), a classe Robot é o jeito de se fazer no Java. Não conheço nenhuma alternativa. É trabalhoso mesmo, tem que pôr a mão na massa. Pra sua vida ficar mais fácil, pode tentar criar uma classe que encapsule comandos comuns, como Ctrl+Tab).

Para sites rodando em navegadores (note que são sites, não programas), além de criar extensões, pode tentar com o Selenium, que permite automatizar comandos a serem rodados numa determinada página web. Funciona tanto diretamente nos browsers quanto num programa Java. É muito usado para testar páginas web, por exemplo.

Abraço.

D

Sobre a classe Robot, eu não acho uma boa ideia usá-la em um programa para implementar funcionalidades nele; pois, muita coisa pode dar errado durante o funcionamento (como o robô dar um click no botão errado porque as posições x e y do botão certo mudaram), a solução se torna meio que uma gambiarra e fazê-la preparada para evitar erros daria muito mais trabalho (como criar um algoritmo que faz um screenshot e procura a posição correta do botão a ser clicado, isso pode dar bastante trabalho e pode falhar dependendo de como for feito).

Além disso, a classe Robot tem várias limitações, como por exemplo, teclar Teclas do Teclado: Pelo que me lembro, até hoje não consegui fazer teclar o “?”, e acho que nem o “ç” (faz tempo que experimentei essa Classe, não lembro direito).

S

gente obrigado pela ajuda

D

Mesmo com tudo que falei da classe Robot, bem recentemente implementei duas soluções usando ela; que faz captura da tela pra buscar pelo que deve ser clicado através de algoritmos que comparam imagens pixel por pixel; até que foi fácil fazer e até que funciona bem, mas ainda sim o funcionamento pode “quebrar” com certa facilidade, e pode ser bem difícil implementar esse tipo de coisa em certos cenários.

Se você tiver interesse, dê uma olhada nesse tópico onde implementei uma Solução com a classe Robot e o JNativeHook para clicar em uma checkbox de uma linha de uma Tabela, onde a linha alvo é a destacada pela Seleção do Ctrl+F do Chrome.

Agora minha opnião é mais favorável a utilização da classe Robot, mas tem que saber até onde vale a pena ir com ela, tem que saber se é uma boa ideia usá-la no caso específico ou não.

Criado 6 de janeiro de 2018
Ultima resposta 26 de fev. de 2018
Respostas 11
Participantes 3