Для чего в windows применяется буфер обмена

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

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

Совместное Windows на другом устройстве

  1. Выберите Начните > Параметры  > система > буфер обмена.

  2. Выберите Синхронизировать на разных устройствах и вкл.

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

Справка по истории буфера обмена

Открытие параметров буфера обмена

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

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

Совместное Windows 10 буфера обмена

  1. Выберите Начните > Параметры  > система > буфер обмена.

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

Справка по истории буфера обмена

Открытие параметров буфера обмена

В продолжении темы «Фишки Windows 10» рассмотрим расширенные возможности буфера обмена, а также создание снимков экрана и их редактирование «на лету».

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

Буфер обмена

Что такое буфер обмена? Это своего рода промежуточное хранилище данных, целью которого является перенос или копирование информации между различными приложениями, используя при этом стандартные функции операционной системы Windows — «Копировать» (Ctrl + C), «Вырезать» (Ctrl + X), «Вставить» (Ctrl + V).

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

Чтобы воспользоваться функционалом, нажмите на кнопку «Пуск». В «Параметрах» надо выбрать кнопку «Система», а в ней — «Буфер обмена». Переведите ползунок в положение «Вкл». Там же можно настроить синхронизацию с другими устройствами, где активирована ваша учетная запись Microsoft. Для этого надо залогиниться под тем аккаунтом, который вы хотите использовать, и включить автоматическую синхронизацию.

Вы также можете включить буфер обмена быстрой комбинацией клавиш «Win + V».


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


После нажатия на кнопку «Включить» в окне появятся ранее скопированные данные, если таковые были, либо буфер будет чист. 

В буфере обмена вы можете видеть все скопированные данные, включая изображения. Использовать их можно в любое время и в любом порядке. Размер файла в буфере (текст, HTML и изображения) ограничен 4 МБ. Стоит помнить, что буфер обмена очищается при выключении/перезапуске ПК. В этом случае в нем останутся только закрепленные блоки данных. Кроме того, при переполнении буфера (если в нем окажется более 25 элементов) журнал очищается автоматически, удаляя в первую очередь самые старые данные, если они не были закреплены. 

Для выбора необходимых данных достаточно найти их в буфере и выбрать левой кнопкой мыши. У каждого элемента есть меню, в которое можно попасть, нажав на «…» в соответствующем блоке.


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

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

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

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

Для примера, на следующих снимках экрана была использована статья из Википедии. По кусочкам скопированы блок со значением слова, а также разделы «География» и «Экономика».


Вот как выглядит расширенный буфер обмена после вызова «Win + V».


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

Если вы работали за чужим компьютером, не забудьте очистить историю в буфере обмена. Особенно это важно, если там могли остаться ваши пароли, данные банковских карт или другая конфиденциальная информация. Для этого кликните по меню «Пуск», зайдите в «Параметры», выберите «Система» и «Буфер обмена», найдите пункт «Очистить данные буфера обмена». Можно удалить историю гораздо быстрее, если нажать комбинацию клавиш «Win + V» и выбрать команду «Очистить всё» в выпадающем меню.

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

Расширенные снимки экрана и их редактирование на лету

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

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

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

Снимок экрана конкретного окна

Предположим, в разных местах экрана у вас открыто несколько окон различных приложений. Все они имеют разные размеры. Но вам нужен снимок одного конкретного окна. Для этого достаточно нажать мышкой на необходимое окно, чтобы сделать его активным. А затем с помощью комбинации «Alt + Print Screen» получить снимок выбранного окна. Изображение попадает в буфер обмена.

Снимок всего экрана, который сразу сохраняется в папку изображений

На случай, если вам необходимо сделать снимок всего экрана и сразу сохранить в память вашего ПК, минуя вставку в редакторы, достаточно использовать комбинацию «Win + Print Screen».


Найти ваш снимок экрана вы сможете в папке «Снимки экрана», которая в свою очередь находится в папке «Изображения».


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

Снимок экрана и его редактирование на лету

Windows 10 оснащена быстрым редактором снимков экрана, что позволяет не отвлекаться на сторонние редакторы. Этот редактор позволяет выбрать область снимка экрана, после чего предложит отредактировать его. Воспользуйтесь комбинацией клавиш «Win + Shift + S».


После нажатия этой комбинации, экран немного потемнеет, обозначая, что вы находитесь в режиме быстрого снимка экрана. Вверху по центру будут находиться кнопки выделения зоны будущего снимка экрана: «Прямоугольник», «Лассо» (возможность обвести любую фигуру для копирования), «Окно» (аналог комбинации «Alt + Print Screen»), «Весь экран». И кнопка отмены — на случай если вы вовсе передумали делать снимок экрана. По стандарту стоит последний использованный инструмент или «Прямоугольник», если вы впервые используете эту панель.


Как только вы сделали снимок экрана, в углу вашего трея (там, где находятся часы) появится уведомление о том, что снимок экрана скопирован в буфер обмена.


Если сразу нажать на уведомление, откроется редактор снимка экрана. Кроме того, редактор можно открыть, запустив программы «Ножницы» или «Набросок на фрагменте экрана». Их можно найти в списке «Все программы». Редактор «Ножницы» позволяет сделать снимок экрана с задержкой до 5 секунд. 


В верхней панели вы можете видеть инструменты для обработки снимка экрана.

Среди них:

  • Рукописный ввод
  • Ручка
  • Карандаш
  • Маркер
  • Ластик
  • Линейка/Транспортир
  • Обрезка

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


В правой части верхней панели есть кнопки для работы с готовым снимком экрана. Среди них:

  • Сохранить в память ПК
  • Скопировать в буфер обмена (можно использовать стандартную комбинацию клавиш)
  • Поделиться (отправить снимок экрана в какое-либо приложение)
  • Меню «…»:
    • Открыть файл (в этом редакторе можно отредактировать ранее сохраненные снимки экрана и другие изображения)
    • Печать

После редактирования и сохранения снимка экрана в памяти ПК или в буфере обмена, можно сразу продолжить работу в вашем приложении.

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

Время на прочтение
12 мин

Количество просмотров 46K

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

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

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

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

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

Теперь взглянем, как с помощью отладчика определить, какие данные записаны в буфер обмена. (Заметьте, что все мои записи сделаны в системе Win7/2008 R2 — так что на других версиях ОС они могут выглядеть несколько иначе). Поскольку буфер является частью Win32k.sys, вам понадобится отладчик ядра. Я люблю использовать в качестве контрольной точки win32k!InternalSetClipboardData+0xe4. В таком смещении хорошо то, что оно находится за регистром RDI, заполненным данными из SetClipboardData в структуре, известной как tagCLIP.

kd> u win32k!InternalSetClipboardData+0xe4-c L5
win32k!InternalSetClipboardData+0xd8:
fffff960`0011e278 894360          mov     dword ptr [rbx+60h],eax
fffff960`0011e27b 8937            mov     dword ptr [rdi],esi
fffff960`0011e27d 4c896708        mov     qword ptr [rdi+8],r12
fffff960`0011e281 896f10          mov     dword ptr [rdi+10h],ebp
fffff960`0011e284 ff15667e1900    call    qword ptr[win32k!_imp_PsGetCurrentProcessWin32Process (fffff960`002b60f0)]

kd> dt win32k!tagCLIP
   +0x000 fmt              : Uint4B
   +0x008 hData            : Ptr64 Void
   +0x010fGlobalHandle     : Int4B

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

kd> k
Child-SP          RetAddr           Call Site
fffff880`0513a940 fffff960`0011e14f win32k!InternalSetClipboardData+0xe4
fffff880`0513ab90 fffff960`000e9312 win32k!SetClipboardData+0x57
fffff880`0513abd0 fffff800`01482ed3 win32k!NtUserSetClipboardData+0x9e
fffff880`0513ac20 00000000`7792e30ant!KiSystemServiceCopyEnd+0x13
00000000`001dfad8 00000000`7792e494 USER32!ZwUserSetClipboardData+0xa
00000000`001dfae0 000007fe`fc5b892b USER32!SetClipboardData+0xdf
00000000`001dfb20 000007fe`fc5ba625 COMCTL32!Edit_Copy+0xdf
00000000`001dfb60 00000000`77929bd1 COMCTL32!Edit_WndProc+0xec9
00000000`001dfc00 00000000`779298da USER32!UserCallWinProcCheckWow+0x1ad
00000000`001dfcc0 00000000`ff5110bc USER32!DispatchMessageWorker+0x3b5
00000000`001dfd40 00000000`ff51133c notepad!WinMain+0x16f
00000000`001dfdc0 00000000`77a2652d notepad!DisplayNonGenuineDlgWorker+0x2da
00000000`001dfe80 00000000`77b5c521 kernel32!BaseThreadInitThunk+0xd
00000000`001dfeb0 00000000`00000000ntdll!RtlUserThreadStart+0x1d

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

kd> dt win32k!tagCLIP @rdi
   +0x000 fmt              : 0xd
   +0x008 hData            : 0x00000000`00270235 Void
   +0x010fGlobalHandle     : 0n1

Fmt — это формат для буфера обмена. 0Xd — это число 13, что соответствует тексту в формате Юникода. Однако мы не можем просто запустить du по значению hData, потому что это дескриптор, а не прямой указатель на данные. Так что нужно поискать его в глобальной структуре win32k — gSharedInfo:

kd> ?win32k!gSharedInfo
Evaluate expression: -7284261440224 = fffff960`002f3520
kd> dt win32k!tagSHAREDINFO fffff960`002f3520
   +0x000 psi              : 0xfffff900`c0980a70 tagSERVERINFO
   +0x008 aheList          : 0xfffff900`c0800000 _HANDLEENTRY
   +0x010 HeEntrySize      : 0x18
   +0x018 pDispInfo        : 0xfffff900`c0981e50 tagDISPLAYINFO
   +0x020ulSharedDelta     : 0
   +0x028 awmControl       : [31] _WNDMSG
   +0x218DefWindowMsgs     : _WNDMSG
   +0x228DefWindowSpecMsgs : _WNDMSG

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

kd> ?0x00000000`00270235 & FFFF
Evaluate expression: 565 = 00000000`00000235
kd> ??sizeof(win32k!_HANDLEENTRY)
unsigned int64 0x18
kd> ? 0xfffff900`c0800000 + (0x235*0x18)
Evaluate expression: -7693351766792 = fffff900`c08034f8
kd> dt win32k!_HANDLEENTRY fffff900`c08034f8
   +0x000 phead            : 0xfffff900`c0de0fb0 _HEAD
   +0x008 pOwner           : (null)
   +0x010 bType            : 0x6 ''
   +0x011 bFlags           : 0 ''
   +0x012 wUniq            : 0x27

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

kd> du fffff900`c0de0fb0 + 0x14
fffff900`c0de0fc4 "Hi NTDebugging readers!"

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

Breakpoint 0 hit
win32k!InternalSetClipboardData+0xe4:
fffff960`0011e284 ff15667e1900   call    qword ptr[win32k!_imp_PsGetCurrentProcessWin32Process (fffff960`002b60f0)]
kd> dt win32k!tagCLIP @rdi
   +0x000 fmt              : 0xd
   +0x008 hData            : (null)
   +0x010fGlobalHandle    : 0n0

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. В этом случае я бы использовал окно «Блокнота», как и раньше:

kd> !process 0 0 notepad.exe
PROCESS fffff980366ecb30
    SessionId: 1  Cid: 0374   Peb: 7fffffd8000  ParentCid: 0814
    DirBase: 1867e000  ObjectTable: fffff9803d28ef90  HandleCount: 52.
    Image: notepad.exe

Если вы делаете это в процессе отладки ядра, то понадобится интерактивно сменить контекст (используя .process /I<address>, затем нажать g и подождать, пока отладчик прорвётся назад). Теперь запускаем DT на адрес процесса как _EPROCESS, и смотрим на поле Win32Process:

kd> dt _EPROCESS fffff980366ecb30 Win32Process
nt!_EPROCESS
   +0x258 Win32Process : 0xfffff900`c18c0ce0 Void

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

kd> dt win32k!tagPROCESSINFO 0xfffff900`c18c0ce0 rpwinsta
   +0x258 rpwinsta : 0xfffff980`0be2af60 tagWINDOWSTATION

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

kd> dt 0xfffff980`0be2af60 tagWINDOWSTATION
win32k!tagWINDOWSTATION
   +0x000 dwSessionId      : 1
   +0x008 rpwinstaNext     : (null)
   +0x010 rpdeskList       : 0xfffff980`0c5e2f20 tagDESKTOP
   +0x018 pTerm            : 0xfffff960`002f5560 tagTERMINAL
   +0x020 dwWSF_Flags      : 0
   +0x028 spklList         : 0xfffff900`c192cf80 tagKL
   +0x030 ptiClipLock      : (null)
   +0x038 ptiDrawingClipboard: (null)
   +0x040 spwndClipOpen    : (null)
   +0x048 spwndClipViewer  : 0xfffff900`c1a4ca70 tagWND
   +0x050 spwndClipOwner   : 0xfffff900`c1a3ef70 tagWND
   +0x058 pClipBase        : 0xfffff900`c5512fa0 tagCLIP
   +0x060 cNumClipFormats  : 4
   +0x064 iClipSerialNumber : 0x16
   +0x068 iClipSequenceNumber : 0xc1
   +0x070 spwndClipboardListener : 0xfffff900`c1a53440 tagWND
   +0x078 pGlobalAtomTable: 0xfffff980`0bd56c70 Void
   +0x080 luidEndSession   : _LUID
   +0x088 luidUser         : _LUID
   +0x090 psidUser         : 0xfffff900`c402afe0 Void

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

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

kd> dt 0xfffff900`c1a4ca70 tagWND
win32k!tagWND
   +0x000 head             : _THRDESKHEAD
   +0x028 state            : 0x40020008
   +0x028 bHasMeun         : 0y0
   +0x028 bHasVerticalScrollbar : 0y0
…

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

kd> dt 0xfffff900`c1a4ca70 _THRDESKHEAD
win32k!_THRDESKHEAD
   +0x000 h                : 0x00000000`000102ae Void
   +0x008 cLockObj         : 6
   +0x010 pti              : 0xfffff900`c4f26c20tagTHREADINFO
   +0x018 rpdesk           : 0xfffff980`0c5e2f20 tagDESKTOP
   +0x020 pSelf            : 0xfffff900`c1a4ca70  "???"

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

kd> dt 0xfffff900`c4f26c20 tagTHREADINFO
win32k!tagTHREADINFO
   +0x000 pEThread         : 0xfffff980`0ef6cb10 _ETHREAD
   +0x008 RefCount         : 1
   +0x010 ptlW32           : (null)
   +0x018 pgdiDcattr       : 0x00000000`000f0d00 Void

Теперь нам интересно только значение поля pEThread, которое мы можем передать в !thread:

kd> !thread 0xfffff980`0ef6cb10 e
THREAD fffff9800ef6cb10 Cid 087c.07ec  Teb: 000007fffffde000 Win32Thread: fffff900c4f26c20 WAIT: (WrUserRequest) UserModeNon-Alertable
    fffff9801c01efe0  SynchronizationEvent
Not impersonating
DeviceMap                 fffff980278a0fc0
Owning Process            fffff98032e18b30       Image:         viewer02.exe
Attached Process          N/A            Image:         N/A
Wait Start TickCount     5435847        Ticks: 33 (0:00:00:00.515)
Context Switch Count     809            IdealProcessor: 0                 LargeStack
UserTime                  00:00:00.000
KernelTime                00:00:00.062
Win32 Start Address 0x000000013f203044
Stack Init fffff880050acdb0 Current fffff880050ac6f0
Base fffff880050ad000 Limit fffff880050a3000 Call 0
Priority 11 BasePriority 8 UnusualBoost 0 ForegroundBoost 2IoPriority 2 PagePriority 5
Child-SP          RetAddr           Call Site
fffff880`050ac730 fffff800`01488f32 nt!KiSwapContext+0x7a
fffff880`050ac870 fffff800`0148b74f nt!KiCommitThreadWait+0x1d2
fffff880`050ac900 fffff960`000dc8e7 nt!KeWaitForSingleObject+0x19f
fffff880`050ac9a0 fffff960`000dc989 win32k!xxxRealSleepThread+0x257
fffff880`050aca40 fffff960`000dafc0 win32k!xxxSleepThread+0x59
fffff880`050aca70 fffff960`000db0c5 win32k!xxxRealInternalGetMessage+0x7dc
fffff880`050acb50 fffff960`000dcab5 win32k!xxxInternalGetMessage+0x35
fffff880`050acb90 fffff800`01482ed3 win32k!NtUserGetMessage+0x75
fffff880`050acc20 00000000`77929e6a nt!KiSystemServiceCopyEnd+0x13 (TrapFrame @ fffff880`050acc20)
00000000`002ffb18 00000000`00000000 0x77929e6a

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

kd> dt 0xfffff980`0be2af60 tagWINDOWSTATION
win32k!tagWINDOWSTATION
   +0x000 dwSessionId      : 1
   +0x008 rpwinstaNext     : (null)
   +0x010 rpdeskList       : 0xfffff980`0c5e2f20 tagDESKTOP
   +0x018 pTerm            : 0xfffff960`002f5560 tagTERMINAL
   +0x020 dwWSF_Flags      : 0
   +0x028 spklList         : 0xfffff900`c192cf80 tagKL
   +0x030 ptiClipLock      : (null)
   +0x038 ptiDrawingClipboard : (null)
   +0x040 spwndClipOpen    : (null)
   +0x048 spwndClipViewer  : 0xfffff900`c1a4ca70tagWND
   +0x050 spwndClipOwner   : 0xfffff900`c1a3ef70tagWND
   +0x058 pClipBase        : 0xfffff900`c5512fa0 tagCLIP
   +0x060 cNumClipFormats  : 4
   +0x064 iClipSerialNumber : 0x16
   +0x068 iClipSequenceNumber : 0xc1
   +0x070 spwndClipboardListener: 0xfffff900`c1a53440 tagWND
   +0x078 pGlobalAtomTable: 0xfffff980`0bd56c70 Void
   +0x080 luidEndSession   : _LUID
   +0x088 luidUser         : _LUID
   +0x090 psidUser         : 0xfffff900`c402afe0 Void

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

kd> dt 0xfffff900`c1a53440 tagWND spwndClipboardListenerNext
win32k!tagWND
   +0x118 spwndClipboardListenerNext : 0xfffff900`c1a50080 tagWND

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

kd> dt 0xfffff900`c1a50080 tagWND spwndClipboardListenerNext
win32k!tagWND
   +0x118 spwndClipboardListenerNext : (null)

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

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

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

Что такое буфер обмена, его функции

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

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

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

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

Стандартные горячие клавиши для работы с буфером обмена для Windows:

  • Ctrl+C или Ctrl+Ins — копировать выделенные файлы или текст;
  • Ctrl+X или Shift+Del — вырезать объекты или текст для перемещения в другое место;
  • Ctrl+V или Shift+Ins — вставить из буфера обмена.

На системе Mac такие горячие клавиши:

  • Command+C — скопировать данные;
  • Command+X — вырезать данные;
  • Command+V — вставить из буфера обмена.

Ноутбук на столе

Информация из буфера обмена хранится в оперативной памяти: PIXNIO

Где находится буфер обмена на ноутбуке? Разницы между обыкновенным ПК и ноутбуком нет. Буфер обмена предоставляет операционная система, все хранится в оперативной памяти. Как посмотреть буфер обмена? Для этого на Windows 10 и Windows 11 предусмотрено сочетание клавиш Win+V, которое открывает журнал буфера обмена. Если он не активирован, система предложит это сделать после нажатия. Если этого не произойдет, включите журнал вручную:

  1. Через меню «Пуск» откройте параметры системы.
  2. Войдите в системный раздел и откройте категорию «Буфер обмена».
  3. Активируйте журнал буфера обмена.

В этом же меню можно настроить синхронизацию между другими устройствами с помощью буфера обмена. Для этого предусмотрен параметр «Синхронизация между устройствами». Активировав эту функцию система автоматически синхронизирует копируемый текст и файлы для переноса на другой ПК. Учтите, что функция синхронизации привязана к учетной записи Microsoft или рабочей учетной записи, поэтому перенос информации возможен только в среде этой учетной записи.

Как открыть буфер обмена на Android? Чтобы посмотреть содержимое буфера обмена, вызовите клавиатуру. В верхней части нажмите на иконку списка. Это и есть буфер обмена. Если открываете его первый раз, будет предложено активировать буфер обмена. Сделайте это, переместив ползунок в активное положение.

Когда сохраняете текст на Android, служба буфера обмена сохраняет информацию в оперативной памяти. На стандартных телефонах Android не можете получить доступ к этим данным напрямую. На телефонах Samsung история буфера обмена хранится в файле в каталоге /data/Clipboard.

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

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

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

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

На системе Windows все просто. Для этого выполните такие действия:

  1. Войдите в параметры системы через меню «Пуск».
  2. Откройте раздел «Система».
  3. Откройте категорию «Буфер обмена».
  4. Нажмите на кнопку внизу «Очистить».

На системе Mac выполните следующее:

  1. Войдите в приложение Finder.
  2. Запустите Terminal. Найдете его в папке «Утилиты»→«Приложения».
  3. Впишите pbcopy</dev/null в окне приложения и нажмите Enter.

После этого буфер обмена будет чист.

В программах Office есть свой буфер обмена. Чтобы его открыть, предусмотрена специальная кнопка для его вызова во вкладке «Главная». Для очистки буфера через программы Office выполните такие действия:

  1. Откройте буфер обмена.
  2. Появится соответствующее окно в левой части экрана. Нажмите «Очистить все».

Если хотите удалить только отдельный файл или текст, щелкните по стрелочке справа от отдельного фрагмента и удалите.

Ноутбук

Очистка буфера обмена на компьютере: Unsplash/Sigmund

Очистка буфера обмена на телефоне

На портале WikiHow предложены такие приложения для просмотра буфера обмена, как Gboard и Clipper. Эти приложения позволяют просматривать его содержимое. Установите их на телефон, разрешите им работать поверх других приложений. Райан Дубе рассказал, что с их помощью можно очистить буфер обмена. Если используете диспетчер буфера обмена Clipper, заметите параметр «Удалить», когда выберете три точки справа от выделения. Используйте его, чтобы очистить элементы буфера обмена.

Другое решение — включить и использовать клавиатуру Gboard, которая идет вместе с новыми телефонами Android. Если этого приложения нет, установите его через Google Play, а затем выполните такие действия:

  1. Откройте приложение для обмена сообщениями на Android и нажмите на символ + слева от текстового поля.
  2. Выберите значок клавиатуры. Когда она появится, выберите символ > вверху. Здесь можете нажать на значок буфера обмена, чтобы открыть его.
  3. Если никогда раньше не использовали буфер обмена на телефоне, увидите уведомление о включении буфера обмена Gboard. Для этого нажмите «Включить буфер обмена».
  4. При включенном буфере обмена каждый раз, когда копируете что-либо, а затем снова нажимаете на буфер обмена на клавиатуре Google Android, увидите историю всех последних добавленных элементов.
  5. Чтобы удалить любой из этих элементов, сначала коснитесь значка редактирования.
  6. Выберите каждый элемент, который хотите удалить, и коснитесь значка корзины.

Менеджер буфера обмена, который поставляют со встроенным приложением для клавиатуры, во многом зависит от версии и марки телефона Android. Клавиатура обычно становится основным способом доступа к буферу обмена и управления им без приложения.

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

  1. Откройте любое приложение, в котором есть поле ввода текста, например «Заметки».
  2. Введите два пробела в поле поиска.
  3. Нажмите и удерживайте пробелы и выберите «Копировать».

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

  1. Откройте любое приложение с текстовым полем.
  2. Нажмите и удерживайте поле поиска вверху.
  3. Коснитесь «Вставить».

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

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

Как включить и использовать журнал буфер обмена. Пошаговая инструкция по настройке.

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

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

История буфера обмена по умолчанию отключена в настройках Windows 11. Включение истории буфера обмена может дать нам еще больше юзабилити, поскольку мы все время что-то копируем и вставляем по миллиону раз в день.

Историю буфера обмена можно быстро включить, перейдя в приложение «Параметры» на устройстве с Windows 11. Процесс довольно простой.

Сначала переходим в меню «Пуск» и нажмите на приложение «Параметры», которое находится в разделе «Закрепленные приложения». Или вводим в строке поиска «Параметры», чтобы выполнить поиск. Кроме этого, можно одновременно нажать клавиши «Win+I» на клавиатуре, чтобы открыть «Параметры».

Переходим во вкладку «Система» в окне параметров.

Правую часть окна прокручиваем вниз и щелкаем по плитке «Буфер обмена», чтобы продолжить.

В новом окне находим плитку «Журнал буфера обмена» и переводим переключатель в положение «Вкл».

Вот и все, мы включили журнал буфера обмена на своем компьютере. Однако есть более простой и удобный способ, который можно использовать для включения буфера обмена — нажимаем на клавиатуре клавиши «Win+V», чтобы вызвать окно буфера обмена и в окне нажимаем на кнопку «Включить».

Использование журнала буфера обмена в Windows 11

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

Затем переходим в место, куда хотим вставить скопированную информацию и нажимаем на клавиши «Win+V», чтобы вызвать окно журнала буфера обмена. Вся ранее скопированная информация будет отображаться в виде отдельных плиток. Чтобы вставить скопированную информацию в месте расположения курсора, нажимаем на необходимую плитку.

Очистка журнала буфера обмена

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

Появится квадратная кнопка с иконкой корзины — кнопка удаления, при нажатии на которую удалится текущий элемент.

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

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

Итак, друзья, надеюсь, это руководство помогло вам узнать, как использовать историю буфера обмена на вашем устройстве с Windows 11.

  • Для удаления этой папки нужно обладать правами администратора windows 10 как удалить
  • Для чего активировать windows 10 pro
  • Для удаления этой папки нужно обладать правами администратора windows 10 как отключить
  • Для чего активатор для windows 7
  • Для удаления этого файла нужно обладать правами администратора windows 10