Механизм "горячих" клавиш нужен для того что бы приложение их установившее в системе получало сообщение (в вашем случае WMHotKey) даже в неактивном состоянии, и получат уведомление что кто-то нажал Alt (VK_MENU) +- PrintScrn (VK_SNAPSHOT) все проги, кому это надо, вернее те, чьи хендлы зареганы как его получатели. Остаётся только в этот момент сделать Clipboard.Clear и буфер будет очищен. Правда ещё один нюанс, если в проге есть другие, напр. "стандартные" хоткеи, тогда надо разрешить базовому обработчику обслужить дальше это сообщение через
Inherited, иначе остальные "горячки" перестанут работать
Добавлено немного позже
Вот для примера запрет на PrintScrn и Alt+PrintScrn во время выполнения
Код:
...
private
procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
...
uses clipbrd;
procedure TForm1.WMHotKey(var Msg : TWMHotKey);
begin
if (Msg.HotKey = 101) or (Msg.HotKey = 102) then ClipBoard.Clear;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(Form1.Handle, 101, 0, VK_SNAPSHOT);
RegisterHotKey(Form1.Handle, 102, MOD_ALT, VK_SNAPSHOT);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Form1.Handle, 101);
UnRegisterHotKey(Form1.Handle, 102);
end;