Ver Mensaje Individual
  #20  
Antiguo 16-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Nelson.

Si yo había probado chequear el estado mediante un timer. Pero adolece del defecto que no funciona si existe alguna otra ventana modal abierta vg.: ShowMessage, MessageBox, ..., u otro form modal, ya que en ese caso WIN+D minimizará todo.

Agrego un poco de codigo a tu ejemplo para mostrar a lo que me refiero:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

const
  WM_AFTER_SHOW = WM_USER + 301;
  
type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    procedure WmAfterShow(var Msg: TMessage); message WM_AFTER_SHOW;
  public
  end;

var
  Form1: TForm1;

implementation {$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   FormStyle := fsNormal;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
    if not Application.Active then
      Application.Restore;

   if WindowState = wsMinimized then
      WindowState := wsNormal;

   if not Visible then
      Visible := True;
end;

procedure TForm1.WmAfterShow(var Msg: TMessage);
begin
 ShowMessage('Presiona WIN + D ...')
end;

procedure TForm1.FormShow(Sender: TObject);
begin
   PostMessage(Self.Handle, WM_AFTER_SHOW,0,0);
end;
end.
Yo creo que shoulder tendría que dejar bién claro cuales son los problemas intrínsecos a su aplicación y cuales no. Si no va a terminar escuchando en el teléfono cosas como: "¡ Venga urgente que el programa desapareció misteriosamente !" y resultó ser que el protector de pantalla se había activado...

Si sus empleados son inoperantes, que que hagan un curso del S.O. que estan empleando. Y si no, que vaya, solucione el problema y lo cobre como corresponde...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita