Слежение за буфером обмена

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Слежение за буфером обмена

Сообщение ronin » 27.01.2010 00:26:27

Вот собственно и вопрос. Пишу программку, которая будет ловить изменения буфера обмена и вытаскивать ссылки из него, ума не приложу как это сделать. В сети нашёл только пример с использованием QT, но найти QT.pas не удалось в папке с лазарусом, нашёл только QT4.pas, но тогда при компиляции ругается на строку QMS:=QClipboard_data(CB); мол undeclarated

Код: Выделить всё
procedure TForm1.ClipboardDataChanged;
var
  QMS : QMimeSourceH;
  S : WideString;
  S1 : String;
  i : Integer;
begin
  QMS:=QClipboard_data(CB);
  Memo1.Lines.Clear;
  (* enumerating clipboard data formats *)
  i:=0;
  S1:=QMimeSource_format(QMS, i);
  while S1<>'' do
  begin
    Memo1.Lines.Add(S1);
    Inc(i);
    S1:=QMimeSource_format(QMS, i);
  end;
  Label3.Caption:='';
  (* if text data is available, we retrieve it *)
  if QTextDrag_canDecode(QMS) then
  begin
    QTextDrag_Decode(QMS, @S);
    Label3.Caption:=S;
  end;
end;


может кто сталкивался с подобной ситуацией, подскажите пожалуйста в какую сторону рыть
ronin
постоялец
 
Сообщения: 174
Зарегистрирован: 27.01.2010 00:14:46

Re: Слежение за буфером обмена

Сообщение serg_iv » 27.01.2010 18:48:23

Если не ошибусь - вроде работает модуль Clipbrd. Работа с буфером обмена не должна отличаться от дельфюшной. Вроде когда то даже это работало.
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: Слежение за буфером обмена

Сообщение ronin » 27.01.2010 23:00:26

вроде работает модуль Clipbrd


так это понятно что работает, мне необходимо чтобы программа следила за изменением буфера обмена и вытаскивала данные определённого формата, сделать так сказать хук на буфер обмена

Добавлено спустя 1 минуту 44 секунды:
все образцы кода что нашёл под делфи написаны под винду и используют api винды, а мне надобно под линукс

Добавлено спустя 13 часов 1 минуту 12 секунд:
единственное что пока придумал, это поставил таймер и в отдельном потоке с интервалом в полсекунды прверяю изменение свойства объекта Clipboard.AsText с переменной типа AsString, вроде работает, надо потестировать

единственно возникает вопрос, может ли таким образом программа прозевать чё нить, ведь тут я так понимаю будет всё зависеть от приоритета программы, производительности ПК и загруженности оси? или я не прав? чем хуже вариант с таймером от использования хуков?
ronin
постоялец
 
Сообщения: 174
Зарегистрирован: 27.01.2010 00:14:46


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 43

Рейтинг@Mail.ru