2009. augusztus 8., szombat

How to close another application


Problem/Question/Abstract:

How to close another application

Answer:

library KillGUI;

uses
  Windows, Messages;

function PostQM(nCode: Integer; wParam: WParam; lparam: LParam): Lparam; stdcall;
begin
  PostQuitMessage(1);
  Result := 0;
end;

function ExitRP(nCode: Integer; wParam: WParam; lparam: LParam): Lparam; stdcall;
begin
  ExitProcess(1);
  Result := 0;
end;

procedure PostQuit(AHandle: THandle; Level: DWord); stdcall;
var
  tid: DWord;
  pid: DWord;
  hProcess: THandle;
begin
  tid := GetWindowThreadProcessId(AHandle, @pid);
  case Level of
    0:
      PostMessage(AHandle, WM_CLOSE, 0, 0);
    1:
      SetWindowsHookEx(WH_GETMESSAGE, PostQM, Hinstance, tid);
    2:
      SetWindowsHookEx(WH_GETMESSAGE, ExitRP, Hinstance, tid);
    3:
      begin
        hProcess := OpenProcess(PROCESS_TERMINATE, False, pid);
        TerminateProcess(hProcess, 1);
      end;
  end;
  PostThreadMessage(tid, 0, 0, 0);
end;

exports
  PostQuit name 'PostQuit';

begin
end.

Nincsenek megjegyzések:

Megjegyzés küldése