Como posso fazer a segunda instância do meu programa passar o controle de volta para a primeira instância?

Eu criei um aplicativo com o Delphi XE3. Meu aplicativo tem um trayicon (eu uso o TCoolTrayIcon para isso); portanto, quando o usuário minimiza, não há um ícone na barra de tarefas, mas apenas no trayicon.

Para evitar mais de uma instância do meu aplicativo, eu uso este código:

procedure CreateMutexes(const MutexName: String);
const
  SECURITY_DESCRIPTOR_REVISION = 1;
var
  SecurityDesc: TSecurityDescriptor;
  SecurityAttr: TSecurityAttributes;
  MutexHandle: THandle;
begin
  InitializeSecurityDescriptor(@SecurityDesc, SECURITY_DESCRIPTOR_REVISION);
  SetSecurityDescriptorDacl(@SecurityDesc, True, nil, False);
  SecurityAttr.nLength := SizeOf(SecurityAttr);
  SecurityAttr.lpSecurityDescriptor := @SecurityDesc;
  SecurityAttr.bInheritHandle := False;
  MutexHandle := CreateMutex(@SecurityAttr, False, PChar(MutexName));

  if MutexHandle <> 0 then
    begin
      if GetLastError = ERROR_ALREADY_EXISTS then
        begin
          MessageBox(0, 'You cannot start more than one instance of ContLab.'
                      + #13#10 + 'Use the instance has already started.',
                       'ContLab', mb_IconHand);

          CloseHandle(MutexHandle);
          Halt;
        end
    end;

  CreateMutex(@SecurityAttr, False, PChar('Global\' + MutexName));
end;

Dessa maneira, quando o usuário inicia o aplicativo duas vezes, ele recebe uma mensagem de erro e a segunda instância é encerrada.

Agora, eu gostaria de não mostrar a mensagem de erro, mas abrir a forma principal da primeira instância do aplicativo e encerrar a segunda instância.

É possível?

questionAnswers(1)

yourAnswerToTheQuestion