System info

Detect a video mode changing

Posted in System info

You should intercept WM_DISPLAYCHANGE message. Implementation of this idea is so:

type
  TForm1 = class(TForm)
    Label1: TLabel;
  private
    procedure MyMessage(var Msg: TWMDisplayChange); 
      message WM_DISPLAYCHANGE;
    { Private declarations }
  public
    { Public declarations }
  end;

...

procedure TForm1.MyMessage(var Msg: TWMDisplayChange);
begin
  Form1.Label1.Caption:=
    'New video mode is: '+
    IntToStr(Msg.Width)+' - '+
    IntToStr(Msg.Height);
end;

Check if time has been changed

Posted in System info

You should intercept WM_TIMECHANGE message. Implementation of this idea is so:

type
  TForm1 = class(TForm)
    Label1: TLabel;
  private
    procedure MyMessage(var Msg: TWMTimeChange); message WM_TIMECHANGE;
    { Private declarations }
  public
    { Public declarations }
  end;

...

procedure TForm1.MyMessage(var Msg: TWMTimeChange);
begin
  if Msg.Result=0 then
    Form1.Label1.Caption:='OK';
end;