Przechwycenie zamknięcia aplikacji w komponencie

1

Witajcie :)

Jak przechwycić zamknięcie aplikacji (Alt-F4, klik w X, zamknięcie z menu na pasku zadań), ale w ciele komponentu bez formy? Chciałbym w momencie zamknięcia programu ustawiać pewną flagę przerywającą obieg czasochłonnej pętli działającej w komponencie (bez jej przerywania zamykanie programu trwa długo do czasu zakończenia pętli, czego chciałbym uniknać). Próbowałem użyć mechanizmu przechwytywania Application.OnMessage, a także AllocateHWnd:

type
  TMojaKlasa = class(TComponent)
  private 
    fHWnd: HWND;
      
  protected
    procedure WndMethod(var Msg: TMessage); virtual;  
 
  public
     constructor Create(AOwner: TComponent); override;  
     destructor Destroy; override;
     
  end;
  
implementation

constructor TMojaKlasa.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  fHWnd := AllocateHWnd(WndMethod);   
end;

destructor TMojaKlasa.Destroy;
begin
  DeallocateHWnd(fHWnd);
  inherited Destroy;
end;

procedure TMojaKlasa.WndMethod(var Msg : TMessage);
begin
  If Msg.Msg={WM_QUIT ?? WM_SYSCOMMAND ??} then MojaFlaga:=true;
  Msg.Result:=DefWindowProc(fHWnd, Msg.Msg, Msg.WParam, Msg.LParam);
end;
 

ale nie reagują przy zamknięciu programu.

Proszę o dobrą radę:)

Pzdr.
Marogo

0

Spróbuj WM_DESTROY

1

Zastosowałem AddTerminateProc(TermProc: TTerminateProc);

Dzięki Arivald! :)

Pzdr.
Marogo

0

Widze że nie tylko ja okupuje pl.comp.lang.delphi i te forum :D

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