function MinimizeToTray(Handle: HWND): Boolean;
var  
  hwndTray: HWND;
  rcWindow: TRect;
  rcTray: TRect;
begin
  // Check passed window handle
  if IsWindow(Handle) then
  begin
    // Get tray handle
    hwndTray := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil);
    // Check tray handle
    if (hwndTray = 0) then
      // Failure
      Result := False
    else
    begin
      // Get window rect and tray rect
      GetWindowRect(Handle, rcWindow);
      GetWindowRect(hwndTray, rcTray);
      // Perform the animation
      DrawAnimatedRects(Handle, IDANI_CAPTION, rcWindow, rcTray);
      // Hide the window
      ShowWindow(Handle, SW_HIDE);
    end;
  end
  else
    // Failure
    Result := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MinimizeToTray(Handle);
end;