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