Хотите знать Windows Clipboard Internals - PullRequest
4 голосов
/ 17 ноября 2011

Я заинтересован в изучении внутренних систем Windows и как все работает.Я склонен к изучению системного программирования на Windows.В этом контексте мне любопытно узнать несколько вещей о том, как внутренне работает буфер обмена Windows:

  • Что именно происходит, когда мы выбираем какой-то текст, изображение и т. Д. И нажимаем Ctrl + C?
  • Что именно происходит, когда мы нажимаем Ctrl + V в другом приложении?
  • Где именно находятся скопированные данные?Поступают ли скопированные данные в память режима ядра, которая используется всеми процессами?
  • Как скопированные данные становятся доступными для другого процесса?

Я хочу знать ответ на вышеупомянутые вопросы с точки зрения системного программиста.

Кроме того, делитесь любыми ресурсами, которые обсуждают внутренние компоненты буфера обмена Windows.

1 Ответ

2 голосов
/ 18 ноября 2011

У меня есть несколько хороших ресурсов на моем сайте: http://www.clipboardextender.com В нем рассказывается о реализации средства просмотра буфера обмена, типичных ошибках, что можно и чего нельзя делать.

По сути, буфер обмена является областью общей памяти, в которую вы копируете данные (также называемые «копировать», например, в ответ на нажатие клавиш Ctrl + C) и копируете данные из (также называемые «вставлять»).Данные могут быть одновременно представлены в десятках общих форматов и в любом количестве форматов, определенных программистом.

Невозможно полностью «сделать резервную копию» буфера обмена и восстановить его, как это было, без влияния на другие программы и не вызывая негативного восприятия пользователем.Изучите «отложенный рендеринг», чтобы понять причину, и подумайте, что произойдет, когда пользователь Excel скопирует 5000 строк x 255 столбцов в электронную таблицу и нажмет Ctrl + V.Поймите это, и вы поймете магию (и подводные камни) отложенного рендеринга.

...