Fechar outro aplicativo via delphi
olá companheiro do clube, gostaria que alguém me explique como faço para fechar um aplicativo via delphi, consegui várias funções, mas todas só fecha pelo título da aplicação, quero saber como fecho pelo nome do sistema que está rodando ex. internet explorer
Infocom
Curtidas 0
Respostas
Skaarj
06/03/2004
121 - Fechar outro programa
1. Exemplo de como fechar a calculadora a partir do texto da janela
Procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(FindWindow(nil, ´Calculadora´), WM_CLOSE,0,0);
end;
2. Exemplo de como fechar a calculadora a partir da classe
Procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(FindWindow(´scicalc´, nil), WM_CLOSE,0,0);
end;
Obs.: A classe de um programa pode ser descoberta usando o programa Winsight32 que vem com o delphi.
1. Exemplo de como fechar a calculadora a partir do texto da janela
Procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(FindWindow(nil, ´Calculadora´), WM_CLOSE,0,0);
end;
2. Exemplo de como fechar a calculadora a partir da classe
Procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(FindWindow(´scicalc´, nil), WM_CLOSE,0,0);
end;
Obs.: A classe de um programa pode ser descoberta usando o programa Winsight32 que vem com o delphi.
By Lloyd Dickinson
GOSTEI 0
Marco Salles
06/03/2004
Blz
GOSTEI 0
Vergaradan
06/03/2004
Olá pessoal! Sou novo no fórum e estou com uma dúvida relacionada a este tópico: finalizando aplicativos externos.
Digamos que eu tenha várias aplicações abertas, inclusive a minha em delphi. Tem como, por esta aplicação, eu finalizar todas as outras, sem que sejam exibidas mensagens de confirmação?
O que eu quero, basicamente, é que minha aplicação delphi feche todos os aplicativos mas não ´se feche´.
Valeu!
Digamos que eu tenha várias aplicações abertas, inclusive a minha em delphi. Tem como, por esta aplicação, eu finalizar todas as outras, sem que sejam exibidas mensagens de confirmação?
O que eu quero, basicamente, é que minha aplicação delphi feche todos os aplicativos mas não ´se feche´.
Valeu!
GOSTEI 0
Vitor Alcantara
06/03/2004
pra retirar a confirmação troque o wm_close por wm_quit.
Pra listar todas as aplicações em um ListBox menos a sua tenta utilizar essa função.
Pra preencher o ListBox com os nomes das aplicações abertas.
Pra fechar todas as aplicações.
Procedure TForm1.Button1Click(Sender: TObject); begin PostMessage(FindWindow(nil, ´Calculadora´), WM_QUIT,0,0); end;
Pra listar todas as aplicações em um ListBox menos a sua tenta utilizar essa função.
Function EnumWindowsProc (Wnd: HWND; lb: TListBox): BOOL; stdcall; var caption: Array [0..128] of Char; hnd1,hnd2:THandle; begin Result := True; hnd1 := findWindow(nil,´SisLanHouse - DesenSoftVitor´);//Nome da minha aplicação hnd2 := FindWindow(nil,´SisCliente´);//Nome da minha segunda aplicação if IsWindowVisible(Wnd) and ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or (HWND(GetWindowLong(Wnd, GWL_HWNDPARENT)) = GetDesktopWindow))and ((GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW) = 0) and (wnd <> hnd1) and (wnd <> hnd2) then begin SendMessage( Wnd, WM_GETTEXT, Sizeof(caption),integer(@caption)); if Caption <> ´´ then lb.AddItem ( caption,lb); end; end;
Pra preencher o ListBox com os nomes das aplicações abertas.
procedure TFormLogin_FrmCliente.SpeedButton3Click(Sender: TObject); begin ListBox1.Clear; EnumWindows( @EnumWindowsProc, integer( listBox1 )); end;
Pra fechar todas as aplicações.
procedure TFormLogin_FrmCliente.SpeedButton2Click(Sender: TObject); var x:integer; hnd:Thandle; begin for x := 0 to Listbox1.Count - 1 do begin hnd := FindWindow(nil,Pchar(ListBox1.Items.Strings[x])); if hnd <> 0 then if UpperCase(ListBox1.Items.Strings[x]) <> ´SISCLIENTE´ then begin PostMessage(FindWindow(nil,Pchar(ListBox1.Items.Strings[x])),WM_QUIT,0,0); end; end; ListBox1.Clear; EnumWindows( @EnumWindowsProc, integer( listBox1 )); SpeedButton3.Click; end;
GOSTEI 0