ShellExecute(handle, 'CLOSE', PChar('C:\WINDOWS\system32\cmd.exe'), '', '', SW_SHOWNORMAL);
02/12/2009
0
Frigorifico Sa
Posts
02/12/2009
Rodrigo Mourão
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!!
03/12/2009
Frigorifico Sa
04/12/2009
Rodrigo Mourão
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,
04/12/2009
Frigorifico Sa
04/12/2009
Rodrigo Mourão
Cara e brincadeira né, nunca que ia passar isso pela minha cabeça rsrsrs
MAs vlw, até a próxima !!
Abs!!
Clique aqui para fazer login e interagir na Comunidade :)