Author: Jonas Bilinkevicius I want my application to go into 'sleep mode' when the screen saver has been started. Answer: 1 unit U1; 2 3 interface 4 5 uses 6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 7 StdCtrls; 8 9 type 10 TForm1 = class(TForm) 11 Label1: TLabel; 12 procedure FormCreate(Sender: TObject); 13 private 14 { Private declarations } 15 procedure AppMessage(var AMessage: TMsg; var Handled: Boolean); 16 public 17 { Public declarations } 18 end; 19 20 var 21 Form1: TForm1; 22 23 implementation 24 25 {$R *.DFM} 26 27 {Get screen saver messages} 28 29 procedure TForm1.AppMessage(var AMessage: TMsg; var Handled: Boolean); 30 begin 31 if ((WM_SYSCOMMAND = AMessage.message) and (SC_SCREENSAVE = AMessage.wParam)) then 32 begin 33 Handled := True; 34 Label1.Caption := 'Warning! Screen saver detected. Top clearance required.'; 35 Handled := False; 36 end; 37 end; 38 39 {On form create} 40 41 procedure TForm1.FormCreate(Sender: TObject); 42 begin 43 Application.OnMessage := AppMessage; 44 end; 45 46 end.