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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar