ShellExecute(handle, 'CLOSE', PChar('C:\WINDOWS\system32\cmd.exe'), '', '', SW_SHOWNORMAL);

02/12/2009

0

Olá,   Abri uma janela pelo cmd e preciso fechala como faço?   Dei uma pesquisada na net mas sem sucesso.      ShellExecute(handle, 'CLOSE', PChar('C:\WINDOWS\system32\cmd.exe'), '', '', SW_SHOWNORMAL);     Att..   Ricardo
Frigorifico Sa

Frigorifico Sa

Responder

Posts

02/12/2009

Rodrigo Mourão

Olá Amigo,


Qual é a aplicação que vc quer fechar ??? O prompt ????

Pois para fechar uma aplicação no windows vc tem que mandar um mensagem via SO para a aplicação mas para isso precisa descobrir o handle da janela através da função findwindow, ou seja, usar o findwindow para pegar o hanlde da janela e utilize o sendmessage para enviar um WM_CLOSE para a janela.

Confirme para mim qual janela quer fechar que monto um exemplo.

Abs!!

Responder

03/12/2009

Frigorifico Sa

Olá,   Rodrigo.     O prompt.     Obrigado pela atenção.   Att.. Ricardo
Responder

04/12/2009

Rodrigo Mourão

Olá Ricardo,

Bem para fechar uma janela via mensagem do SO seira assim:

PostMessage(FindWindow(nil, 'MSN Messenger'), WM_CLOSE, 0, 0);


O Post Message é o comando para enviar a mensagem. A Mensagem enviada e a WM_CLose que irá fechar a janela. 0 e 0 são parâmetros default. Agora vem a pior parte e vc vai saber pq.

Temos que mandar a mansagem para uma janela, tudo no windows e um janela e possui um handle. A funcao FindWindow retorna o hanlde de uma janela mediante o nome da classe ou o nome ja janela, por exemplo.

Imagine que sua aplicação tenha um form TFrmCLiente de nome FrmCliente. Para fechar este form via SO fariamos:

PostMessage(FindWindow('TFrmCliente', nil), WM_CLOSE, 0, 0);

ou

PostMessage(FindWindow(nil, 'FrmCliente'), WM_CLOSE, 0, 0);


O grande desafio agora e descobrir o nome da janela do CMD ou a classe. Eu tentei com CMD, cmd.exe, prompt, ms-dos, dos e nada. Vou continuar tentando aqui inclusive procurar um programa que descubra o nome de uma janela. O delphi 7 vinha com um programa destes mas nao tenho mais o Dlephi 7.

Decidi postar pois a explicação poderá te ajudar e talvez vc descubrar o nome da janela primeiro do que eu. De qualquer forma continuarei procurando.

Att,


Responder

04/12/2009

Frigorifico Sa

Rodrigo,   Vc não vai acreditar, resolvi testar o "caption da janela" e deu certo. Rss.     PostMessage(FindWindow(nil, 'C:\WINDOWS\system32\cmd.exe'), WM_CLOSE, 0, 0);     Muito obrigado pela dica.     Pode encerrar.   Att.. Ricardo      
Responder

04/12/2009

Rodrigo Mourão

kkkkkkkkkkkkkk

Cara e brincadeira né, nunca que ia passar isso pela minha cabeça rsrsrs

MAs vlw, até a próxima !!

Abs!!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar