Senhores, gostaria que uma aplicação Desktop fosse executada sobre um Process ID específico de um programa em Windows. Porém não estou conseguindo a solução, já realizei muita pesquisa pela web e ainda não encontrei a solução.
Gostaria de saber se alguem pode me dar um norte de como proceder, quais classes podem ser usadas, qualquer coisa.
O ProcessID é atribuído pelo SO quando o processo é criado. Não existe isto de “rodar sob um ProcessID específico”. O que existe é rodar sob um userID específico.
Vc. poderia explicar um pouco melhor o que vc. quer ?
[quote=psevestre]O ProcessID é atribuído pelo SO quando o processo é criado. Não existe isto de “rodar sob um ProcessID específico”. O que existe é rodar sob um userID específico.
Vc. poderia explicar um pouco melhor o que vc. quer ?[/quote]
Primeiramente obrigado por responder.
Segundamente, é o seguinte, eu tenho um Programa XPTO.qlq sendo executado, ou seja, eu tenho uma janela de aplicativo com titulo “XPTO” e nos processos do SO eu tenho o processo “XPTO.qlq”, ao executar meu programa, vamos supor que seja um programa para imprimir utilizando a classe Robot a string “OI” por meio dos keyevent…
Eu gostaria de determinar via código que o programa identificasse que o programa XPTO estaria rodando, e executasse os eventos apenas neste programa XPTO, sem afetar outros programas.
Acho que agora eu fui mais claro e deu pra entender melhor, senão, avisa aí que eu tento de novo.
Vc. quer “robotizar” seu aplicativo XPTO ? Por robotizar quero dizer simular o envio de comandos, como se fosse um usuário e, eventualmente, obter o resultado da operação efetuada.
é exatamente isso… o meu programa já executa as ações automaticamente, porém não quero que ele fique “pobre”, e para isso, quero implementar ele de tal forma que ele funcione apenas em uma determinada janela (previamente determinada via código), permitindo ao usuário utilizar a máquina livremente sem atrapalhar a aplicação e vice-versa…
Vou dar uma olhada na sua sugestão e posto aqui o parecer.
Hum… você não pode mandar teclas ou mover o mouse sobre uma janela minimizada, escondida, ou simplesmente não ativa, ou seja, obstruída por outras aplicações (que é o que você gostaria de fazer com esse aplicativo que “deixaria” o usuário usar a máquina sem atrapalhar a aplicação), sem mudar o comportamento da aplicação.
O sistema operacional não entende que você quer fazer exatamente isso.
O que se pode fazer é executar essa aplicação em uma outra sessão na mesma máquina (no caso do Windows, usando Windows Terminal Services, que não funciona em qualquer versão do Windows e custa $$$, ou no caso do Linux, em um outro desktop). Dessa forma, o usuário pode trabalhar e seu aplicativo pode rodar sem que o usuário atrapalhe a execução de seu aplicativo, ou vice-versa. A única coisa é que um não pode acompanhar o progresso do outro, já que estão rodando em sessões diferentes.
[quote=thingol][quote]
é exatamente isso… o meu programa já executa as ações automaticamente, porém não quero que ele fique “pobre”, e para isso, quero implementar ele de tal forma que ele funcione apenas em uma determinada janela (previamente determinada via código), permitindo ao usuário utilizar a máquina livremente sem atrapalhar a aplicação e vice-versa…
[/quote]
Hum… você não pode mandar teclas ou mover o mouse sobre uma janela minimizada, escondida, ou simplesmente não ativa, ou seja, obstruída por outras aplicações (que é o que você gostaria de fazer com esse aplicativo que “deixaria” o usuário usar a máquina sem atrapalhar a aplicação), sem mudar o comportamento da aplicação.
O sistema operacional não entende que você quer fazer exatamente isso.
O que se pode fazer é executar essa aplicação em uma outra sessão na mesma máquina (no caso do Windows, usando Windows Terminal Services, que não funciona em qualquer versão do Windows e custa $$$, ou no caso do Linux, em um outro desktop). Dessa forma, o usuário pode trabalhar e seu aplicativo pode rodar sem que o usuário atrapalhe a execução de seu aplicativo, ou vice-versa. A única coisa é que um não pode acompanhar o progresso do outro, já que estão rodando em sessões diferentes.[/quote]
Olha só, pelas pesquisas que eu to realizando, e não estão sendo poucas, pelo que eu entendi, espero não estar errado, é que dá pra fazer isso em java sim, porém utilizando as apis nativas do SO, e li também sobre o SWT e o SWT Win32, que permitiriam que o java utilizasse as apis nativas do SO sem necessidade por exemplo, de codificação em C (JNI).
Me corrija se eu estiver errado neste entendimento.
Gostaria que alguém que entendesse de SWT desse sua opnião.
Lembrando que toda e qualquer opnião/comentário é muito bem vinda e válida pra mim.