Как захватить событие вставки в windows?
Привет,
Я занимаюсь исследовательским проектом и использую Windows API для обнаружения изменений в буфере обмена. Я переопределяю WndProc и до сих пор он работает нормально, и я могу обнаружить, когда происходит событие копирования. Но теперь проблема заключается в том, как обнаружить событие вставки. Сообщение WM_PASTE работает не во всех сценариях. То, что я думаю сделать, это :
Глобальный крюк Ctrl + v , Ctrl + Shift + v
Hook shell контекстное меню и обнаружение, когда пользователь нажимает на кнопку Вставить
Крюк приложения редактировать &ГТ; паста
Поскольку разные приложения могут реализовать эту функцию вставки по-разному, это очень утомительная задача, и я не думаю, что это лучший способ сделать это. Я хотел бы иметь некоторые предложения по этому поводу.
Что я уже пробовал:
Я попытался подключить горячую клавишу реестра Ctrl + v, и она отлично работает. Но как указано в здесь
Цитата:Крючки, как правило, замедляют работу системы, поскольку они увеличивают объем обработки, которую система должна выполнять для каждого сообщения. Вы должны устанавливать крючок только тогда, когда это необходимо, и снимать его как можно скорее.
Но, в моем приложении постоянно я хочу следить, происходит ли какое-либо событие вставки или нет.
Richard MacCutchan
Вы не можете гарантировать, что поймаете события вставки, так как они не всегда будут использовать значения по умолчанию. Например, у меня есть приложение, которое делает пасты без каких-либо событий клавиатуры или мыши.
Dilan Shaminda
да, это проблема события вставки. Спасибо за комментарий
Jochen Arndt
Надежного способа обнаружения событий вставки не существует, поскольку они обрабатываются целевыми приложениями (как вы уже знаете).
Таким образом, вам придется подключаться ко всем возможным методам, которые могут использоваться приложениями, но, вероятно, все равно пропустите некоторые из них, потому что есть приложения, которые реализуют свою собственную обработку контекстного меню и/или используют определенные приложением коды сообщений вместо WM_PASTE.
Dilan Shaminda
"есть приложения, которые реализуют свое собственное контекстное меню", - я не думал об этом сценарии. Спасибо