title: Something like SendToBack for TApplication
body: <p>Good day to all!</p>
  
  <p>I want to emulate work of different forms in my app as different programms.<br> 
  All forms have its own button on TaskBar, mainform of app is invisible and Application.ShowMainForm := false.<br><br>
  But if I show two forms, then open some programm that overlay both forms, then open first form (second form is behind some programm), then close first form, the second form activates and restores in front of some programm.<br><br>
  I understand that it restores because after closing first form my app keep active state and that's why first visible form is shown. How can I prevent restoring second form? It seems that I need send to back my app after closing, but I don't know how.</p>
  
  <blockquote>
    <p>@David Heffernan<br>
    It's actually Windows that is behind all of that. When one of your
    forms is closed, Windows has to decide where to move the focus too.
    And it chooses to move it to another top-level window in your process,
    since a visible one exists. It makes this happen by sending the window
    that it selects a WM_SETFOCUS message. No doubt you can intercept this
    and stop it happening</p>
  </blockquote>
  
  <p>I have tried to intercepr WM_SETFOCUS on my window, but there is no such message.</p>
  
  <pre><code>type
    TfMyForm = class(TForm)  
      procedure FormCreate(Sender: TObject);
    private
      { Private declarations }
      FOldWindowProc: TWndMethod;
      procedure NewWindowProc(var Message: TMessage);
    end;
  
  implementation
  
  procedure TfMyForm.FormCreate(Sender: TObject);
  begin
    FOldWindowProc := WindowProc;
    WindowProc := NewWindowProc;
  end;
  
  procedure TfMyForm.NewWindowProc(var Message: TMessage);
  begin
    if Message.Msg = WM_SETFOCUS then
      Beep;
    FOldWindowProc(Message);
  end;
  </code></pre>