Посмотрите на «отложенный рендеринг» в WinAPI. С помощью этой техники вы загружаете буфер обмена с нулевыми маркерами, и после вставки окна уведомляют вас сообщением WM_RENDERFORMAT. Вот как приложения, такие как Excel, могут «копировать» 25 различных форматов. Это на самом деле не копирует их всех. На самом деле он создает некоторые распространенные, такие как TEXT, но «рекламирует» другие, такие как Bitmap, Html, WKS и т. Д., Предпочитая подождать, чтобы посмотреть, что целевое приложение хочет вставить.
Учтите это: вы можете выделить 5000 ячеек в Excel и скопировать, и буфер обмена обновляется довольно быстро. Теперь вставьте в Windows Paint, и ваша система внезапно начнет сканировать, когда Excel пытается отобразить огромный растровый рисунок. Старые версии обычно вылетали после использования всей доступной памяти и загрузки файла подкачки. Это было еще в дни Windows 3.1, хотя. Современные версии выдают сообщение о «слишком большом растровом изображении» или «недостаточно памяти».
Предупреждение: отложенный рендеринг будет преждевременно запускаться приложениями, которые отслеживают буфер обмена и автоматически вставляют данные в себя, такими как удаленный рабочий стол, VMWare, офисный буфер обмена и мой собственный ClipMate. Некоторым программам мониторинга буфера обмена можно запретить обновление буфера обмена с помощью флага CF_Clipboard_Viewer_Ignore, который я описал здесь:
текст ссылки