Dúvida sobre como proceder para execução sobre Process ID

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.

Desde já agradeço.

Aguardo respostas.

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.

Mais uma vez, obrigado!!!

Agora acho que entendi melhor !

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.

Se este é seu caso, sugiro uma olhada no marathon (http://www.marathontesting.com), específico para aimplativos java, ou se não for este o caso, no AutoHotKey (http://www.autohotkey.com/).

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

Muito obrigado pela resposta.

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.

Obrigado a todos.

Pessoal,

mais nenhuma opniao ?

Não temos ninguem aqui que possa me ajudar ?
Seja com swt win32, seja com JNI, seja com sei la o que que permita java acessar apis nativas…