Minimizar outro aplicativo (Jogo full-screen)

Boa noite pessoal.

Estou tentando fazer um pequeno programa que abra um outro e depois de um tempo minimize-o.

Para chamar o programa externo estou usando o bom e velho Runtime.exec() e capturando o processo em um objeto java.lang.Process.
Com esse objeto eu consigo encerrar o programa externo mas preciso minimiza-lo, como faria?


Process p = Runtime.getRuntime().exec("gimp");
p.???

Obrigado pela atenção,
Gustavo Ferreira

Oi,

Não faria. A principio não tem como fazer isso utilizando as propriedades do Process.

Tchauzin!

dica, procura no google como minimizar programas via cmd (caso for windows) através do pid (process id ou algo do genero, senão me falhe a memória, o process tem o valor), acredito eu ser o meio mais fácil…

se for em windows o comando start possui parametros para fazer isso. acho que é /min

Sim, pelo cmd dá para fazer assim: start/min notepad e o notepad abrirá e automaticamente minimizará. O problema é que meu aplicativo precisa controlar quando minimizar, dessa forma não daria certo…

Obrigado :thumbup:

Dei uma procurada e não encontrei não, mas se desse, como eu pegaria o pid do processo logo apos o Java chamar o aplicativo externo?

Obrigado :thumbup:

Vou explicar melhor a finalidade disso.

Estou fazendo um pequeno programa para monitorar uma aplicação full-screen (um jogo) e após um certo tempo alerta o usuário de alguma forma.

Para alertar, eu criei um JDialog com tudo que precisava, perfeito. Esse sistema chama o jogo e começa a monitorar, quando chega o momento certo, o usuário precisa receber o alerta. Pelo fato da aplicação ser full-screen, o JDialog não aparece… tentei fazer uma forma de alertar também em full-screen, mas meu alerta não sobrepõem o jogo, então tentei procurar na internet algum programinha que minimizasse tudo para que depois eu mandasse o alert. Achei! Achei um programinha no baixaki com 7kb que é só chama-lo e ele minimiza tudo! Funcionou quase perfeito, consigo chama-lo pelo Java só que ele também não conseguiu minimizar aplicações full-screen, só janelas normais… :evil: :evil: :evil: Por último, tentei um “artifício técnico”, usar a classe Robot para simular um ALT+Tab, até funcionou, tirou o foco do jogo fazendo-o minimizar e mostrar meu alert, o problema que depois disso o Java trava, o windows informa que o o javaw parou inesperadamente :evil: … e o meu programa precisa continuar rodando… não pode parar por isso. :?

Alguma idéia? Tem alguém aqui fodão em C,C++ que saiba como minimizar uma aplicação full-screen? Porque se precisar eu faço uma dll até…

Abraços! :thumbup:

[citei um topico sem querer]

Olá,

Tem uma aplicaçãozinha chamada NirCmd que possui essas utilidades de manipular as janelas pela linha de comando… Se não tiver problema em usar um programinha externo, acho que serviria…

http://www.nirsoft.net/utils/nircmd.html

Valeu

– EDIT –

Ahn… esse programinha de 7kb que vc baixou não seria o Nircmd né? =P

Se sim, foi malz… rs

[quote=haroflow]Olá,

Tem uma aplicaçãozinha chamada NirCmd que possui essas utilidades de manipular as janelas pela linha de comando… Se não tiver problema em usar um programinha externo, acho que serviria…

http://www.nirsoft.net/utils/nircmd.html

Valeu

– EDIT –

Ahn… esse programinha de 7kb que vc baixou não seria o Nircmd né? =P

Se sim, foi malz… rs[/quote]

Eu tinha tentado o MinimizeAll.
Esse que vc sugeriu tem a opção de minimizar todas as janelas?
A única coisa que encontrei foi isso: “Minimize all your Internet Explorer windows”
Tentei dar umas modificadas nos parametros para minimizar tudo mas não deu certo :?

Opa,

Então, na documentação dele tem isso daqui

[find]: The method to find the window 
handle: Finds the desired window by specifying the handle of the window in [window to find] parameter. 
id: Finds the desired child window by specifying the id of the child window. Useful only for child windows. 
class: Finds the desired window by specifying the class name of the window in [window to find] parameter. 
title: Finds the desired window by specifying the exact title of the window in [window to find] parameter. 
stitle: Finds the desired window by specifying the first few characters of the window in [window to find] parameter. 
ititle: Finds the desired window by specifying a sequence of characters that exists in the window title. 
alltop: All top windows. 
alltopnodesktop: All top windows, except of desktop and tray windows. 
active: The current active window. 
foreground: The window in foreground. 
desktop: The desktop window 
process:Finds the desired window by specifying process ID (for example: /3412) or process name (for example: firefox.exe). 

Então a principio, se você quiser minimizar todas as janelas… seria um “nircmd win min alltop”, funcionou aqui, apesar de ele ter minimizado algo que parece ser o msn (que já estava minimizado)… ou então pegar pelo processo (se for uma tela só)…

Valeu