Fórum Fechar outro aplicativo via delphi #218723
06/03/2004
0
Infocom
Curtir tópico
+ 0Posts
06/03/2004
Skaarj
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.
Gostei + 0
06/04/2005
Marco Salles
Gostei + 0
04/01/2008
Vergaradan
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
05/01/2008
Vitor Alcantara
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
Clique aqui para fazer login e interagir na Comunidade :)