Articles

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;