Как можно копировать вставить? - PullRequest
0 голосов
/ 19 октября 2018

Мне было интересно, что после долгого использования компьютера мне кажется, что копирование - это фундаментальная функция, но я знаю, что это не так.Итак, вопрос в том, как это действительно работает?

Я думал обо всех идеях, как это могло быть реализовано, но я застреваю каждый раз, когда сталкиваюсь с различными форматами файлов, такими как gif, jpg, txt, png, mp3, mp4, JSON, YML и т. Д., ИЧем дальше вы идете по комплексу, он становится похож на ярлыки, ссылки и затем на каталоги.Например, как он копирует изображения, которые находятся в результате поиска, в Chrome, тогда как иногда вы не можете скопировать что-либо из-за ограничений, но вы не можете выбрать что-то, тогда вы не можете скопировать это, тогда как иногда, даже если вы не можете выбрать в иерархии,дети копируются так как это реализовано.

Но когда кто-то спрашивает меня, как обычно работает копирование-вставка, я отвечаю так: Когда что-то копируется, он помещает скопированный элемент в память, и при вставке его куда-то ОС находит место, кудаон должен быть скопирован и реплицирует весь файл в двоичный файл и копирует его.

Что не может быть правдой, поэтому вы можете объяснить, как именно он работает.Также было бы полезно узнать, как был написан код для копирования вставки.

1 Ответ

0 голосов
/ 06 ноября 2018

Первое, что вам нужно понять, это то, что «копирование и вставка», а также «перетаскивание» являются формой IPC (межпроцессное взаимодействие), поскольку данные передаются из одного приложения в другое.Этот механизм обычно предоставляется той же подсистемой или службой, которая отвечает за управление графическим интерфейсом пользователя.

Эта подсистема обеспечивает механизм для приложений «источника» и «назначения» для согласования формата данных, которыйдолжны быть переданы, и если они «согласны» на какой-то общий формат, то данные могут быть переданы.

Пример, иллюстрирующий концепцию:

  1. Пользователь выбирает текст в Интернете.браузер и нажимает Ctrl + C.
  2. Браузер сообщает оконной системе, что у него есть некоторые данные, доступные для копирования. Обратите внимание, что на этом шаге данные не копируются.
  3. Пользователь открывает текстовый редактор и нажимает клавиши Ctrl + V.
  4. Текстовый редактор сообщает системе управления окнами предоставить ей содержимоев буфер обмена в текстовом формате .
  5. Система управления окнами сообщает браузеру предоставить общие данные в текстовом формате .
  6. Браузерпреобразует свои данные из HTML (или что-то еще) в обычный текст и передает их в текстовый редактор через систему управления окнами. Обратите внимание, что это преобразование не всегда возможно (в зависимости от форматов и приложений), поэтому иногда вы не можете вставить скопированные данные.

Технические подробности

  • В Windows эта функциональность предоставляется через API буфера обмена , как упомянул Кен Уайт.
  • В Linux (и, вероятно, везде) функциональность буфера обмена не является строго частью ОС.и предоставляется Window Server / Manager (который на самом деле является просто процессом обслуживания) через системный протокол управления окнами, такой как X protocol или Wayland .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...