Es fácil: enviando un mensaje WM_CLOSE. Por ejemplo, cerrar la calculadora de Windows.
procedure TForm1.Button1Click(Sender: TObject);
var
Mango:integer;
begin
Mango:=FindWindow(nil,'Calculadora');
if mango=0 then
ShowMessage('No encuentro esa aplicacion')
else
SendMessage(Mango,WM_CLOSE,0,0);
end;
Para cerrar cualquier otra aplicacion, deberias saber o bien su ClassName o bien el titulo de la ventana. Este invento te dirá ambos de todas las aplicaciones que se estén ejecutando
Crea una form y pon un TMemo (Memo1) y un TButton (Button1) en ella. En el private de la declaracion de la form pon:
private
{ Private declarations }
WindowList1 : TList;
Y en el OnCLick del Button1 pon este código:
procedure TForm1.Button2Click(Sender: TObject);
var
TopWindow: HWND;
WinName, WinClass: array[0..80] of Char;
x: Integer;
NoError: Boolean;
function GetAllWindows(Handle: HWND; NotUsed: Pointer): Boolean; stdcall;
begin
Result := True;
Form1.WindowList1.Add(Pointer(Handle));
end;
begin
TopWindow := Handle;
WindowList1 := TList.Create;
try
NoError := EnumWindows(@GetAllWindows, Longint(@TopWindow));
if not NoError then
Exit;
for x := 0 to WindowList1.Count - 1 do
begin
GetWindowText(HWND(WindowList1[x]),WinName,SizeOf(WinName) - 1);
GetClassName(HWND(WindowList1[x]),WinClass,SizeOf(WinName) - 1);
memo1.Lines.add('Titulo:'+Winname+'-Clase:'+WinClass);
end;
finally
WindowList1.Free;
end;
end;
Y tendras una lista de las tareas ejecutandose, con su titulo y nombre de clase.
|