You should set your own procedure to OnIdle event of application. Use GetAsyncKeyState function in it.
type TForm1 = class(TForm) Label1: TLabel; procedure FormCreate(Sender: TObject); private procedure PrintScreenDetect(Sender: TObject; var Result: Boolean); public end; ... procedure TForm1.FormCreate(Sender: TObject); begin Application.OnIdle:=PrintScreenDetect; end; procedure TForm1.PrintScreenDetect(Sender: TObject; var Result: Boolean); begin if GetAsyncKeyState(VK_SNAPSHOT)<>0 then Label1.Caption:='PrintScreen Key was pressed'; Result:=True; end;