Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Мониториг за Clipboard при старте приложения, срабатывает WMDrawClipboard 
:(
    Опции темы
Akella
  Дата 6.4.2012, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Установить hook на буфер обмена не сложно с помощью 

Код


procedure TfmMain.WMDrawClipboard(var Message: TMessage);
//Var
//  Clipboard: TClipboard;
begin
  inherited;
  Clipboard.Open;
  if Clipboard.HasFormat(CF_TEXT) then
    ShowMessage(Clipboard.asText);
  Clipboard.Close;


  { Inform the next window in the clipboard viewer chain }
  SendMessage(hwndViewer, WM_DRAWCLIPBOARD, 0, 0);
end;


Но проблема в том, что при запуске приложения сразу срабатывает WMDrawClipboard.
Как этого избежать?
Фактически в момент старта приложения буфер обмена не меняется ведь.
PM MAIL   Вверх
Illusion Dolphin
Дата 7.4.2012, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Для Vista и выше можно юзать AddClipboardFormatListener/RemoveClipboardFormatListener - там такой проблемы нету.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Akella
Дата 7.4.2012, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



меня интересует и XP 
PM MAIL   Вверх
Illusion Dolphin
Дата 7.4.2012, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Для XP надо проверку писать. Другой вопрос как её делать, самый простой способ - игнорировать первое сообщение.
Я сделал несколько иначе. Регистрация SetClipboardViewer/AddClipboardFormatListener на FormShow (только первый раз). В Create AddClipboardFormatListener не работает по каким-то соображениям, выяснять не стал. В таком случае в обработчике WM_DRAWCLIPBOARD пишем
Код

  if not (fsShowing in FormState) then
  begin
    //изменился клипбоард
  end;



--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0535 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.