Ver Mensaje Individual
  #6  
Antiguo 31-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola,

Continuando lo que había planteado, he finalmente encontrado una respuesta definitiva dada por Peter Below en los foros de Borland. Básicamente se trata de habilitar la aplicación cada vez que alguien la deshabilite. La aplicación recibe el mensaje WM_ENABLE cuando se habilita o se inhabilita así que lo único que hay que hacer es interceptar este mensaje. Desafortunadamente el evento OnMessage de una componente ApplicationEvents no recibe este mensaje así que hay que usar otra técnica que es la que nos muestra Peter Below:

Código Delphi [-]
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);

  private
    function AppHook(var Msg: TMessage): Boolean;
  end;

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.HookMainWindow(AppHook);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Application.UnhookMainWindow(AppHook);
end;

function TForm1.AppHook(var Msg: TMessage): Boolean;
begin
  Result := false;
  if Msg.Msg = WM_ENABLE then
    if not TWMEnable(Msg).Enabled then
    begin
      EnableWindow(Application.Handle, true);
      Result := true;
    end;
end;

end.

// Saludos
Responder Con Cita