Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Clipboard - не отдаёт текст при неактивной форме


Автор: WebSurfer 21.12.2009, 19:06
Использую Clipboard для копирования всего содержимого страницы WebBrowser (ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT)), находящейся на форме приложения. Данные копируются нормально и находятся в буфере. Далее необходимо вставить их в Memo, находящееся на той же форме.

Тут возникает необычная проблема. Данные вставляются ТОЛЬКО если форма активна. Т.е. если в момент вставки активно любое другое окно, то по каким-то причинам вставка из буфера в Memo не происходит. Под словом "не происходит" стоит понимать ситуацию, когда все обращения к буферу ничего не возвращают. Вставку пробовал осуществлять через AsText, PasteFromClipboard и SendMessage(Memo.Handle, WM_PASTE, 0, 0) - результат одинаково отрицательный.

Т.е. если пользователь при запущенном приложении работает, например в ICQ (и окно ICQ активно в данный момент), то в моём приложении ничего не происходит - почему-то Clipboard не отдаёт ничего. Как только форму программы делаем активной (достаточно просто щёлкнуть по форме), всё начинает работать.

Как заставить программу вставлять текст из буфера в свои же элементы типа Memo в случае НЕАКТИВНОГО окна?

Заранее благодарен 

Автор: WebSurfer 21.12.2009, 19:32
Добавлю, что всё происходит по собітию самого обычного таймера. Вот код:

Код

if not WebBrowser1.Busy then begin
      WebBrowser1.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT);
      WebBrowser1.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT);
      Memo2.Clear;
      Memo2.PasteFromClipboard;
end


Добавлено через 14 минут и 44 секунды
Вопрос решился smile Оказалось, что это анти-кейлоггер во всё виноват. По-умному блокировал работу буфера таким образом. При отключённом антикее всё работает, как часы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)