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

8 respostas
coca1na

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.

8 Respostas

P

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 ?

coca1na

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 ?

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!!!

P

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

coca1na

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

T

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.

coca1na

thingol:

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

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.

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.

coca1na

Pessoal,

mais nenhuma opniao ?

coca1na

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…

Criado 10 de março de 2009
Ultima resposta 12 de mar. de 2009
Respostas 8
Participantes 3