Я разрабатываю программное обеспечение, которое должно знать, когда происходит событие PASTE EVENT (через контекстное меню или ctrl + V) (только для файлов/каталогов). Более-менее, что-то вроде TeraCopy или Copy Handler. Когда вы копируете и затем вставляете, TeraCopy обрабатывает склейки.
Я знаю более или менее, как захватить КОПИРОВАННОЕ СОБЫТИЕ, вам нужно только установить ClipboardViewer, и вы поймаете все глобальные СОБЫТИЯ КОПИРОВАНИЯ (на самом деле называется WM_DRAWCLIPBOARD). Вы можете узнать это здесь: http://www.radsoftware.com.au/articles/clipboardmonitor.aspx Но ClipBoardViewer не предоставляет вам возможность поймать PASTE EVENT.Как подключить глобальное событие PASTE?
ответ
Процесс изменения состояния посредством «Вклеивания» специфичен для отдельных приложений, поэтому нет волшебного способа узнать, изменилось ли состояние приложения после доступа к буферу.
Лучшее, что вы можете сделать, это определить, извлекало ли приложение данные из буфера обмена. Опять же, нет никакого способа узнать, что приложение сделало с этими данными. Это похоже на то, что кто-то открыл свой вход, не зная, куда они идут, если угодно.
Если вы хотите попробовать это, вы можете сделать что-то вроде подключения функции GetClipboardData. Для получения информации о том, как отслеживать общесистемные API-интерфейсы, проверьте образцы в Micrsoft Detours - http://research.microsoft.com/sn/detours
Но программное обеспечение, такое как Teracopy и Copy Handler, обнаруживает событие вставки. Мне нужно почти то же самое, обнаружить, когда файл/каталог вставлен.
Фактически, это программное обеспечение работает не только с помощью ctrl + v, но также и при нажатии на пазу в контекстном меню (щелкните правой кнопкой мыши).
Может быть, они просто обнаруживают keypress ctrl + v вместо этого? – mmiika 2008-10-28 03:13:37