Программный перехват информации с буфера обмена

Данная статья посвящена проблеме перехвата информации с буфера обмена. В данной статье будет рассматриваться перехват только текстовой информации. Работа с буфером обмена рассматривается в среде Delphi.

Первым этапом является установка дескриптора окна просмотра буфера обмена, это выполняется за счет функции SetClipboardViewer. Окна просмотра буфера обмена получают определенное сообщение WM_DRAWCLIPBOARD, каждый раз когда происходит изменения содержимого буфера обмена. Это организуется за счет функции  SendMessage.

Ниже приведен пример работы функции WMDrawClipboard.

procedure TForm1.WMDrawClipboard(var Msg: TWMDrawClipboard);
var
RegExp: TRegExpr;
begin
//создание регулярного выражения
…
if RegExp.Exec then
 begin
//Отправка сигнала функции WM_DRAWCLIPBOARD
SendMessage(FNextViewer, WM_DRAWCLIPBOARD, 0, 0);
 Msg.Result:=0;
//Проверка типа информации в буфере
  if Clipboard.HasFormat(CF_TEXT) then
   begin
     ListBox1.Items.Add(Clipboard.AsText);
   end;
 end;
end;

Данная осуществляет перехват информации с буфера обмена проверяет тип информации в буфере обмена, проверяет по регулярному выражению формат полученных данных, после чего добавляет ее в ListBox.