Como rodar seu programa dentro de outro

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

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.

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

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.

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

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.

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

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.

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.

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).

gente obrigado pela ajuda

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.