Что такое буфер обмена кратко

Буфер обмена — что это такое и где находится

Буфер обмена позволяет значительно упростить работу с данными. Он позволяет копировать информацию с одного источника на другой буквально парой кликов мыши или несколькими движениями по экрану.

Часто данный термин можно услышать при работе за компьютером и смартфоном на базе операционной системе Android. Сегодня мы разберемся, что это такое простыми словами.

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

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

Что такое буфер обмена

Буфер обмена (clipboard) — это место в памяти операционной системы, которое используется программным обеспечением для хранения там промежуточных данных. К примеру, когда вы копируете или вырезаете текст/файлы — они попадают в буфер обмена, а когда вставляете их — копируются оттуда и удаляются. Является безымянным и временным хранилищем данных, в отличие от того же кэша.

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Используется в настольных и мобильных операционных системах, таких как: Windows, Mac OS, IOS, Android и других. В основном даже не заметен для пользователя, и многие даже не знают о таком термине.

В зависимости от ОС и ее настроек может быть разного размера. К примеру, на Андроид в режиме разработчика его размер можно изменить, но система начнет довольно ощутимо тормозить, поэтому менять такие параметры крайне не рекомендуется.

Может быть общим — у операционной системы, которым могут пользоваться все другие ПО, так и чисто у определенной программы, которым может пользоваться только она. К примеру, функция копирования и вставки в фотошопе будет работать только в нем, а вот скопировать файлы из Windows и вставить его в другое ПО, в тот же Фотошоп, можно без проблем.

Данные из него копируются быстро т.к. хранятся в быстрой памяти и всегда на подхвате у системы, в большинстве случаев достаточно лишь нажать на клавиатуре одновременно клавиши «CTRL + V», чтобы скопировать то, что в нем хранится.

Был придуман, как временное хранилище текста. Когда пользователь вырезал определенный кусок текста, он стирался из документа и попадал в буфер, фактически не удаляясь. Поэтому было предложено использовать этот термин.

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Важно! При вырезании части текста из документа, он действительно пропадет и его можно будет затем вставить обратно. Но, в ситуации, когда вырезаются файлы — они просто помечаются меткой, что должны быть удалены после их копирования куда-то. И, если вы копируете файл, он не попадает в буфер полностью, а лишь попадет его часть — местоположение. Поэтому если вы нажмете на — копировать, а затем удалите так никуда не вставив, функция копирования уже не будет затем работать, вам просто покажут информацию о том, что элемент не может быть найден.

Где находится буфер обмена

Находится в памяти системы, вытащить оттуда данные можно в любой момент. Каждый раз, когда вы копируете новые данные — старые перезаписываются.

Работают эти команды практически во всем ПО. В Windows так можно копировать и перемещать файлы, в Word и других текстовых редакторах — копировать и вставлять текст.

Это универсальные команды, также они часто дублируются соответствующими пунктами в меню программ.

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Некоторые программы позволяют просматривать содержимое, которое хранится в буфере обмена. В том же Word посмотреть, что там хранится можно, кликнув по значку под пунктами форматирования (смотрите картинку).

В заключение

Это основное, что нужно знать про эту функцию. Очищать его не нужно, а смысла смотреть, что там хранится нет никакого. Это временное хранилище данных, которое сразу перезаписывается если вы копируете новую информацию.

Источник

Буфер обмена — что это и где он находится в операционной системе Windows, а также как его очистить?

Здравствуйте, уважаемые читатели блога Goldbusinessnet.com. Сегодня поговорим о буфере обмена, о том, как его найти и возможно ли его открыть для просмотра содержимого, а также о некоторых других особенностях этого понятия.

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

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

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

Что такое буфер обмена и как мы его используем?

На самом деле, осуществляя какие-то действия, мы частенько не задумываемся об их содержании и сути. Точно также обстоит дело и в нашем случае. Давайте посмотрим, как мы задействуем буфер обмена (по-английски clipboard) при простейших манипуляциях с файлами или текстом, если у вас установлена наиболее популярная ОС Windows.

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

Это можно сделать двумя способами: вызвать контекстное меню кликом правой кнопкой мышки и выбрать из него «Копировать» или «Вырезать» либо воспользоваться «горячими клавишами» соответственно Ctrl + C и Ctrl + X:

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

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

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Видите, как все просто? Подобные операции можно производить с абсолютно любыми файлами, включая видео, причем перемещать их из одного приложения (программы) в другое. Например, попробуем скопировать кусочек текста из простого блокнота Windows в буфер обмена, а затем вставить содержимое в документ, созданный в онлайн сервисе Google Таблицы:

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

При использовании clipboard важно иметь ввиду следующее. Помещать объекты (файлы, текст) в буфер обмена и затем извлекать их оттуда для вставки в нужную область можно неограниченное количество раз, но это касается только лишь последнего объекта, над которым вы совершаете подобное действие. Не совсем понятно?

Попробую объяснить более внятно. Скажем, вы скопировали какой-нибудь файлик, тогда вы можете его сколь угодно много раз вставлять в разные места, не повторяя процедуру копирования, а просто каждый раз выбирая из контекстного меню пункт «Вставить» либо набирая выше упомянутую комбинацию Ctrl + V.

Однако, как только вы скопируете или вырежете другой файл, тот сразу окажется в буфере и вытеснит оттуда предыдущий объект, который будет удален. Конечно, все выше описанные действия возможны только до тех пор, пока вам не понадобится перезагрузить или выключить компьютер, то есть в течении рабочей сессии системы. После перезагрузки или отключения ПК буфер автоматически будет очищен.

Резюмируя, засвидетельствуем, что сохраняется в буфере обмена только последний объект, над которым совершаем процедуру (в том числе многократно повторяющуюся) копирования или вырезания. Как только вы начинаете производить аналогичные действия с другим файлом, вся информация о предыдущем стирается. При просмотре ниже следующего видеоролика вы получите представление о буфере обмена на основе интересных примеров:

Где буфер обмена в операционной системе Виндоус?

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

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

В Windows XP это clipbrd.exe, который расположен в системной папке по адресу:

Естественно, эта информация дана для общего развития, ни в коем случае не экспериментируйте и не производите никаких действий с этим файликом (как и со всеми остальными объектами, находящимися в системной папке), это может привести к необратимым последствиям.

Чтобы посмотреть содержание буфера в версии XP, вы в силах воспользоваться меню «Пуск» и находящейся там кнопкой «Выполнить». В строку вводите название запускающего файла «clipbrd.exe». После этих действий в открывшемся окне появится содержимое последнего скопированного объекта.

В современных версиях ОС Виндоус разработчики изменили структуру работы буфера обмена. В той же Windows 7 и более поздних модификациях (8 и 10) такого файла нет. Вместо него за хранение данных в буфере обмена отвечает clip.exe, также находящийся в системной папке:

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Однако, открыть его и посмотреть, что там находится, вам так просто не удастся. Это один из недостатков, которых, в общем-то, немало. Собственно, мы используем буфер на автомате лишь при перемещении объектов.

А при определенной специфике работы на компьютере иногда важно отслеживать историю clipboard и удалять только ту информацию, которая вам действительно не нужна. Необходимы и некоторые другие функции, которые возможно задействовать только с помощью стороннего софта.

Как почистить буфер обмена на компьютере

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

Допустим, вы скопировали или вырезали крупный объект (скажем, видеофайл), который занимает приличное место, что отрицательно может сказаться на производительности устройства, особенно, если ваш компьютер не может похвастаться большим объемом оперативной памяти.

Либо необходимо удалить какую-нибудь конфиденциальную информацию (например, пароль). Конечно, такие данные в буфер обмена операционной системы вообще не рекомендуется помещать. Для хранения паролей лучше использовать специальные программы.

Я, например, остановился на KeePass, имеющей свой буфер, информация в котором автоматически удаляется в том порядке, который вы сами можете настроить:

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Но это так, к слову пришлось. А теперь продолжим непосредственно по теме. Для очистки буфера есть несколько способов, каждый из которых вполне по силам даже начинающим пользователям. Причем они доступны для всех последних версий Windows (7, 8, 10).

Замена содержания буфера обмена

Данный метод не является очисткой в полном смысле этого слова, но тем не менее. Он годится, когда вам срочно надо удалить из буфера «тяжелый файл» или попавшую туда конфиденциальную информацию. В этом случае просто копируете любую часть текста, можно даже с открытой в браузере веб-страницы:

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Как видно из скриншота выше, вполне достаточно скопировать единственный символ (букву), чтобы вытеснить из клипборда находящийся там объект любого размера и содержания.

Очистка clipboard силами ОС Виндовс

Этот метод предусматривает использование командной строки. Для Виндоус 8/10 проще всего кликнуть правой кнопкой мышки по логотипу в левом нижнем углу, где открывается меню «Пуск» либо нажать сочетание клавиш Win + X, в результате чего появится список быстрых ссылок, среди которых присутствует нужный нам линк запуска утилиты командной строки:

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Для Windows 7 открываем меню «Пуск» и в строку поиска вписываем «cmd»:

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Запускаем командную строку от имени администратора. Для этого размещаем курсор на найденной системой ссылке, кликаем правой кнопкой мышки и из контекстного меню выбираем нужный пункт:

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

В результате должно появиться диалоговое окно черного цвета. Туда необходимо внести следующую команду:

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Жмем «Enter» на клавиатуре, в итоге буфер будет очищен, чего мы и добивались. Ежели вы намерены постоянно прибегать к такой операции, то каждый раз совершать несколько кликов будет не совсем удобно. Поэтому можно «застолбить» очистку и выполнять ее в один клик.

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Затем в строку расположения объекта вписываете путь до утилиты и нужную команду по очистке буфера обмена:

Это будет выглядеть следующим образом:

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Жмете на кнопочку «Далее» и на следующем шаге придумываете название для данного действа, которое бы сразу давало понять, для чего оно предназначено:

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

После нажатия «Готово» системой будет создан ярлык, который будет размещен прямо на рабочем столе. Теперь в любое время вы сможете почистить clipboard одним кликом, затрачивая на это буквально несколько секунд. В качестве дополнения смотрите видеоролик:

Как очистить буфер средствами стороннего софта?

Специально устанавливать программное обеспечение только для очистки я считаю нерентабельным (впрочем, сколько людей, столько и мнений). А вот если вам необходимы дополнительные возможности, связанные и с другими функциями, например, касающимися сохранения истории буфера обмена, то лучшим решением, пожалуй, будет программа Clipdiary, о которой обязательно напишу отдельную статью, так как она того заслуживает.

Ну а теперь посмотрим, с помощью каких многофункциональных программ, часто применяемых пользователями, можно выполнить задачу очистки. Возможно, вы применяете для повышения производительности своего компьютера тот же CCleaner? Если нет, то рекомендую, особенно если ваш ПК не «первой свежести» и нуждается в постоянной очистке всякого «мусора».

Даже бесплатный вариант этого софта (а есть еще платный с широчайшими возможностями) может принести неоценимую пользу, за один сеанс вычищая реестр, временные файлы, кеш браузеров и т.д. Среди всего этого многообразия есть и опция по чистке буфера Windows:

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Наверняка многие юзеры пользуются бесплатной программой для переключения клавиатуры Punto Switcher, которая позволяет многократно повысить производительность работы на компьютере. Пунто может предложить пользователю, помимо целого ряда других полезных опций, еще и расширенный функционал буфера обмена, включая возможность его очистки.

Источник

Что такое буфер обмена и где он находится в компьютере и телефоне

Что такое буфер обмена и где он находится на компьютере, важный вопрос для новичков. Опыт обучения в Академии заработка показывает, что большинство новичков, не знает, что это такое. В статье мы разберем, что такое буфер обмена, где он находится, как долго в нём хранится информация, как его можно очистить и рассмотрим программы для работы с буфером обмена.

Что такое буфер обмена и где он находится в компьютере, это просто

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена краткоЗдравствуйте друзья! Если Вы недавно начали работать с компьютером, то наверняка у Вас возникал вопрос, что такое буфер обмена и где он находится в компьютере? На самом деле, всё не так сложно. Раскроем это понятие простым языком. Буфер обмена – это временное хранилище данных на компьютере.

Например, Вы скопировали папку, картинку, текст или какие-либо другие файлы. И после этого они переместились временно в буфер обмена, до вставки этих файлов в документ или папку.

Где можно найти этот буфер обмена? Несомненно, у него есть своё место на компьютере. В современных версиях Windows 7, 8, 10 Вы не сможете посмотреть в буфере ту информацию, которая была скопирована Вами. Например, в Windows XP это сделать возможно. Открываете ярлык «Мой компьютер» далее, «Windows» или «Documents and setting» затем переходите в папку «System 32».

В этой папке наёдете такой файл – «Clipbrd.exe». Нажимаете на него правой кнопкой мыши и кнопку «Открыть». Далее, Вы заметите всю информацию, в этом буфере обмена. В других версиях Виндовс, путь к этому файлу такой же. Но, он называется по-другому – «Clip». Выглядит он так (Рисунок 1).

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Если Вы не хотите его долго искать, достаточно в поиске (вверху с правой стороны) набрать это слово и оно автоматически найдётся.

Буфер обмена на телефоне, простыми словами для новичков

Система телефона иногда начинает немного притормаживать во время работы, и это нормально. Ведь он не имеет такой большой мощности, как компьютеры. Буфер обмена у телефонов работает аналогичным образом. Так же, как и на компьютерах.

Простыми словами на телефоном устройстве буфер обмена– это оперативная память телефона. Например, выделим несколько сообщений на нашем Смартфоне. Далее, выбираем из меню кнопку «Копировать». После этого Вы увидите системное сообщение «Скопировано в буфер обмена».

Теперь, мы можем скопированные сообщения вставить в блокнот и сохранить. Таким образом используется буфера обмена в телефоне.

Как долго хранится информация в буфере обмена

Данные файлов в буфере обмена слишком долго не хранятся. Как уже было сказано ранее, это временная память. Например, Вы скопировали одно предложение из текста и вставили его в документ. Затем выбрали ещё раз другую информацию для вставки (Рисунок 2).

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

После каждого копирования различной информации, в буфере обмена всё изменяется. По нескольку файлов там никогда не хранится.

Даже если Вы скопировали целый фильм, который весит например, гигабайты, его можно в ту же секунду заменить простым копированием текста из браузера или документа. Итак, мы рассмотрели, что такое буфер обмена и где он находится на компьютере. Теперь, попробуем его очистить.

Как очистить буфер обмена на компьютере и телефоне

Вам, можно не заморачиваться с очисткой буфера обмена. Поскольку мы заменяем файлы постоянно, и надолго там информация не сохраняется. Но, варианты удаления файлов из буфера обмена существуют:

Итак, перечисленные способы Вам помогут очищать буфер обмена без каких-либо трудностей.

Программа для работы с буфером обмена

Вы можете использовать специальные программные обеспечения, которые заточены, чтобы работать с буфером обмена на компьютере. Но, мы выберем ту, которая легка в использовании, и у неё удобный функционал. Как раз то, что нужно новичку. Название этой программы — «Punto Switcher». Практически на каждом компьютере, она должна быть установлена. Но, если у Вас её нет, можете скачать эту программу в Сети.

Данная утилита помогает пользователю переключать автоматически раскладку клавиатуры. Если Вы вдруг забыли переключить её, например, на русский язык.

Она автоматически загружает скопированные данные из буфера обмена. Для этого Вам нужно подключить её к буферу обмена, чтобы она собирала с него всю информацию. Запускаем программу, идём в настройки «Общие» далее «Дополнительные настройки» и нажимаем на раздел «Следить за буфером обмена» (Рисунок 3).

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

После этого жмём кнопку «ОК», чтобы сохранить все изменения. Затем, перезагружаем компьютер.

Чтобы посмотреть буфер обмена в этой программе, нажимаем на её значок в трее правой кнопкой мыши, и выбираем из меню функцию «Посмотреть историю» (Рисунок 4).

Что такое буфер обмена кратко. Смотреть фото Что такое буфер обмена кратко. Смотреть картинку Что такое буфер обмена кратко. Картинка про Что такое буфер обмена кратко. Фото Что такое буфер обмена кратко

Вы увидите скопированные ранее ссылки, или кусочки предложений из текста. Список программ, которые помогут Вам работать с буфером обмена:

Используйте эти программы, и Вы не только откроете буфер обмена на компьютере, но и возьмёте оттуда нужные Вам файлы.

Заключение

Подведём основные итоги. Сегодня мы узнали, что такое буфер обмена и где он находится на компьютере. Буфер обмена, это своего рода история, которая сохраняется на компьютере за счёт наших действий. Копирование файлов, вырезание предложений из текста и так далее.

Эту возможность на компьютере Вы можете использовать недолго, пока включен компьютер или не заменён файл. Буфер обмена, позволяет не терять информацию, а наоборот сохранять её. Если Вы забыли то, что скопировали, это не проблема. В буфере обмена всё это сохранилось. Так же используйте программы, которые управляют буфером обмена. Удачной Вам работы за компьютером!

Источник

Как работает буфер обмена в Windows

Недавно у меня появилась возможность выполнить отладку буфера обмена в Windows, и я решил, что хорошо бы поделиться информацией, которую удалось узнать. Буфер обмена — это тот компонент Windows, который многие из нас используют десятки (сотни?) раз в день, особо не размышляя об этом. Прежде чем взяться за это дело, я даже никогда не задумывался, как всё устроено. Как выяснилось, там столько интересного, что вы даже не можете себе представить. Сначала опишу, как приложения хранят разные типы данных в буфере обмена и как извлекают их оттуда, а затем — как приложения могут «прицепиться» к буферу и отслеживать изменения в нём. В обоих случае вы увидите отладочные записи, которые показывают, как получить доступ к данным из отладчика.

Начнём с обсуждения форматов буфера обмена. Такие форматы используются для описания, какие типы данные можно поместить в буфер. Там есть некоторое количество предопределённых стандартных форматов, которые может использовать приложение, вроде битового массива, текста ANSI, текста в Юникоде и TIFF. Windows также позволяет приложению установить собственный формат. Например, текстовый процессор может зарегистрировать формат, включающий в себя текст, форматирование и картинки. Конечно, это ведёт к определённой проблеме: что произойдёт, если вы скопируете данные из текстового редактора и вставите их в «Блокнот», который не понимает всего этого форматирования и не отображает картинки?

Выход — разрешить одновременное хранение данных в буфере обмена в нескольких форматах. Когда я раньше думал о буфере обмена, то представлял, что там хранится единственный объект («мой текст» или «моя картинка»), но на самом деле мои данные хранятся в буфере в разных формах. Программа, которая берёт информацию из буфера, получает её в том формате, который она может использовать.

Как же данные появляются в буфере обмена? Очень просто, приложение сначала объявляет о праве собственности на буфер обмена через функцию OpenClipboard. После этого программа может очистить буфер обмена командой EmptyClipboard и, наконец, поместить туда свои данные командой SetClipboardData. SetClipboardData принимает два параметра. Первый — это идентификатор одного из форматов буфера обмена, которые мы упоминали выше. Второй — дескриптор сегмента в памяти, который содержит данные в этом формате. Приложение может неоднократно вызывать команду SetClipboardData для каждого из форматов, какие она хочет поместить в буфер, от лучшего к худшему (поскольку то приложение, куда будут вставляться данные, выберет первый подходящий формат из списка). Чтобы облегчить жизнь разработчику, Windows автоматически обеспечивает конвертацию некоторых типов форматов для буфера обмена. По окончании процесса программа вызывает CloseClipboard.

Когда пользователь нажимает кнопку «Вставить», целевое приложение вызывает OpenClipboard и одну из следующих функций для определения доступных форматов данных: IsClipboardFormatAvailable, GetPriorityClipboardFormat или EnumClipboardFormats. Если оно находит подходящий формат, то тогда вызывает GetClipboardData с идентификатором нужного формата в качестве параметра, чтобы получить данные. В конце приложение использует команду CloseClipboard для закрытия буфера.

Вот как выглядит вызов к SetClipboardData от «Блокнота»:

Итак, теперь мы можем просмотреть содержимое RDI как tagCLIP и увидеть, что записано в буфер:

aheList в gSharedInfo содержит массив с дескрипторами, и последние два байта hData, умноженные на размер записи дескриптора, показывают адрес записи нашего дескриптора:

Если посмотреть phead со смещением 14, то мы получим наши данные (это смещение может отличаться на разных платформах):

Представим другой сценарий. Я скопировал какой-то текст из Wordpad, и команда SetClipboardData отработала определённое количество раз, чтобы разместить данные в разных форматах. Запись в формате Юникода выглядит так::

hData равен нулю! Почему так? Оказывается, буфер обмена позволяет приложению передавать нуль в качестве параметра SetClipboardData для определённого формата. Это означает, что приложение способно предоставить данные в данном формате, но сделает это позже, в случае необходимости. Если я захочу вставить текст в «Блокнот», для чего в буфере должен быть текст в Юникоде, Windows отправит сообщение WM_RENDERFORMAT в окно WordPad, и тогда WordPad предоставит данные в новом формате. Конечно, если приложение закрывается до того, как предоставило данные во всех форматах, Windows понадобятся все форматы. В этом случае Windows отправит сообщение WM_RENDERALLFORMATS, чтобы другие приложения могли использовать данные из буфера обмена после закрытия материнского приложения.

Теперь посмотрим, как приложение может отслеживать буфер обмена на предмет изменений. Это важно знать, потому что в этом месте Windows позволяет сторонним приложениям подключаться к системе. Если у вас наблюдаются непонятные глюки с копированием и вставкой, причиной может быть некорректное поведение какой-то из таких программ. Начнём с того, что рассмотрим механизмы подключения к буферу обмена. Затем рассмотрим, можно ли с помощью отладчика идентифицировать приложения, которые используют такие хуки.

Есть три способа отслеживать буфер обмена на предмет изменений: просмотр буфера, прослушивание форматов буфера и запрос порядкового номера буфера. Мы сосредоточимся на первых двух способах, потому что они предусматривают получение уведомлений, когда содержимое буфера обновилось. В третьем методе приложение должно само проверять каждый раз, изменился ли буфер, и этот метод нельзя использовать в цикле опросов.

Функциональность Clipboard Viewer появилась ещё в версии Windows 2000, если не раньше. Принцип работы довольно простой: приложение, которое заинтересовано в получении уведомлений об изменении в буфере, вызывает SetClipboardViewer и передаёт дескриптор своего окна. Windows хранит этот дескриптор в структуре win32k, и каждый раз при изменении буфера обмена Windows отправляет сообщение WM_DRAWCLIPBOARD в зарегистрированное окно.

Конечно, зарегистрироваться для просмотра буфера могут несколько окон — как Windows справится с этим? Ну, если приложение вызывает SetClipboardViewer, а другое окно раньше уже зарегистрировалось для просмотра буфера обмена, то Windows возвращает новому окну значение дескриптора предыдущего окна. И теперь новое окно, следящее за буфером, обязано вызвать SendMessage каждый раз, когда получает WM_DRAWCLIPBOARD, и уведомить об изменении буфера следующее окно в цепочке тех, кто следит за буфером. Каждое из окон, следящих за буфером, также должно обрабатывать сообщения WM_CHANGECBCHAIN. Такие сообщения уведомляют все остальные окна об удалении одного звена в цепочке и сообщают, какое звено становится следующим в очереди. Это позволяет сохранить цепочку.

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

Чтобы справиться с такими проблемами, в Windows Vista добавили механизм прослушивания формата буфера обмена — Clipboard Format Listener. Он работает во многом так же, как просмотр буфера обмена, за исключением того, что Windows сама ведёт список приложений, которые прослушивают буфер, а не полагается на добропорядочность приложений, которые должны сохранять цепочку.

Если приложение хочет прослушивать буфер, оно вызывает функцию AddClipboardFormatListener и передаёт дескриптор своего окна. После этого обработчик сообщений окна будет получать сообщения WM_CLIPBOARDUPDATE. Когда приложение собирается завершить работу или больше не хочет получать уведомления, оно вызывает RemoveClipboardFormatListener.

Мы рассмотрели, как зарегистрировать просмотр/прослушивание буфера обмена. Теперь посмотрим, как с помощью отладчика определить, какие программы участвуют в этих процессах. Сначала нужно идентифицировать процесс в сессии, где мы хотим проверить мониторинг буфера обмена. Это может быть любой процесс win32 в этой сессии — он нужен нам просто для того, чтобы найти указатель на Window Station. В этом случае я бы использовал окно «Блокнота», как и раньше:

Далее посмотрим адрес Win32Process как win32k!tagPROCESSINFO и узнаем значение rpwinsta:

Это наша Window Station. Сливаем содержимое через dt:

Обратите внимание на поля spwndClipViewer, spwndClipboardListener и spwndClipOwnerfields. Здесь spwndClipViewer — это последнее зарегистрированное окно в цепочке тех, кто просматривает буфер обмена. Также spwndClipboardListener — последнее зарегистрированное окно прослушивания буфера в списке Clipboard Format Listener. Окно spwndClipOwner — это то окно, которое разместило данные в буфере обмена.

Ели мы знаем окно, то осталось несколько шагов, чтобы узнать, к какому процессу оно относится. Нас интересуют forspwndClipViewer, spwndClipboardListener и spwndClipOwner. Сначала запускаем dt, чтобы узнать значение tagWND. Для этой демонстрации мы используем spwndClipViewer:

Нас интересует только значение head — так что если смещение 0, делаем dt для того же адреса на _THRDESKHEAD:

Теперь запускаем dt для адреса, указанного в поле pti как tagTHREADINFO:

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

Если запустить dt на spwndClipboardListener, то увидим поле spwndClipboardListenerNext с указанием следующего прослушивающего процесса:

При достижении последнего процесса в списке прослушивающих буфер tagWND, значение его поля spwndClipboardListenerNext будет нулевым:

Используя адрес окна, мы можем тем же методом добраться до названия процесса. Как упоминалось ранее, поскольку tagWND — это структура ядра, ОС сама хранит указатели spwndClipboardListener/spwndClipboardListenerNext, так что они не могут привести к таким проблемам с отслеживанием буфера, как цепочки просмотра.

На этом заканчивается наш обзор буфера обмена Windows. Надеюсь, для вас он стал информативным. Хотите узнать больше о мониторинге буфера обмена? Вот хорошая статья MSDN об этом.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *