Jak zamknąć aktywne okno w windows?

0

Mam problem, gdyz nie wiem jak moge programowo zamknąć okno w windows (aktywne - ostatnio otwarte). Prosze o pomoc (najprostrze rozwiazanie) jestem bezradny. Musze pobrac handle okna?


pozdrawiam LochNess

0

musisz pobrac.

sendmessage(getactivewindow(),WM_QUIT,0,0);

0

GetActiveWindow zwraca uchwyt aktywnego okna utworzonego przez wątek wywołujący tę funkcję. Wywołując: sendmessage(getactivewindow,WM_QUIT,0,0); zamkniesz okno Twojego programu, a jeśli aktywne było okno główne - zamkniesz program.

Natomiast funkcja GetForegroundWindow zwraca uchwyt okna aktywnego w ogóle (okno, w którym użytkownik w danej chwili pracuje).
Niekiedy WM_QUIT nie wystarcza. Wówczas można dodatkowo wysłać WM_CLOSE, WM_DESTROY. Niekiedy i to nie wystarcza. W takiej sytuacji można próbować zakończyć cały proces, który utworzył dane okno (TerminateProcess).

procedure CloseForeWindow;
var
  h: HWND;
begin
  h := GetForegroundWindow;

  if h <> 0 then
  begin
    SendMessage(h, WM_CLOSE, 0, 0);
    if IsWindow(h) then
      SendMessage(h, WM_QUIT, 0, 0);
    if IsWindow(h) then
      SendMessage(h, WM_DESTROY, 0, 0);
  end;
end;
0

Dziekuje za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1