Просмотр содержимого буфера обмена в ос windows осуществляется с помощью

Applies ToWindows 11 Windows 10

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

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

Ниже приведены ответы на некоторые вопросы, связанные с буфером обмена.

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

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

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

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

  2. Установите переключатель журнал буфера обмена на всех устройствах в значение Вкл

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

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

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

  2. В области Очистить данные буфера обмена выберите Очистить.

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

Вы можете очистить любой конкретный элемент в буфере обмена.

  1. Выберите Клавиша с логотипом Windows + V.

  2. Рядом с рассматриваемым элементом выберите Дополнительные сведения (…), а затем — Удалить .

Устранение неполадок с буфером обмена

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

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

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

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

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

  2. В разделе Журнал буфера обмена на устройствах установите переключатель в значение Вкл.

  3. Выберите Автоматически синхронизировать текст, который я копируем.

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

Размеры элементов не должны превышать 4 МБ. Поддерживаются форматы файлов text, HTML и bitmap.

Журнал буфера обмена рассчитан не более чем на 25 скопированных записей. Система автоматически удаляет старые элементы(если они не закреплены), чтобы освободить место для новых.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

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

Стандартный буфер, который все привыкли использовать через контекстное меню «Скопировать» и «Вставить» или через сочетания Ctrl + C, Ctrl + V, имеет лишь одну «ячейку памяти». Чего бывает очень мало. Начиная с Windows 10 Microsoft внедрила журнал буфера обмена, который умеет запоминать до 25 элементов. Копировать и вставлять при этом можно текст, ссылки, изображения и другой контент.

Как включить журнал буфера обмена Windows 10 и Windows 11

По умолчанию функция неактивна. Её можно активировать следующим образом.

Как включить буфер обмена Windows 10: удерживая клавишу Win, нажмите V на клавиатуре

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

Как включить буфер обмена Windows 10: включите тумблер

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

Как просмотреть буферы обмена Windows 10 и Windows 11

После включения система начнёт хранить всё, что вы копируете или вырезаете, в буфере обмена.

Как посмотреть буфер обмена Windows 10: нажмите Win + V

Для просмотра журнала нажмите Win + V. На экране отобразится плавающее окошко со списком сохранённых элементов, которое можно переместить в удобное место. Запомнить сочетание легко — как обычная вставка, только вместо Ctrl используется клавиша Win.

Как вставить куда-то скопированный элемент

Как посмотреть буфер обмена Windows 10 и вставить скопированный элемент: кликните по нему

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

Как закрепить нужный элемент

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

Кликните по значку иголки

Для этого просто кликните по значку иголки напротив нужного элемента.

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

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

Как посмотреть буфер обмена Windows 10: элементы можно удалить по отдельности и разом

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

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

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

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

Недавно у меня появилась возможность выполнить отладку буфера обмена в 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
    • Как посмотреть что в нем
    • Как очистить его историю
    • Настройки журнала буфера обмена в Windows
  • Вопросы и ответы: 1

Всем здравия!

В современных ОС Windows 10/11 появилась одна интересная фишка, которую многие почему-то не используют. Речь, конечно, о журнале буфера обмена

Что это и зачем нужно?

Вот представьте: при работе нередко приходится что-то копировать (тексты, картинки), вставлять, затем снова копировать и т.д. по кругу… Порой, приходится десятки раз открыть источник, чтобы поочередно из него скопировать нужные фразы, символы и т.д., часто одно и тоже по неск. раз. Неудобно?!

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

Теперь, собственно, о том, как с ней работать…

Примечание: кстати, у меня на блоге есть заметка на аналогичную тему для Android устройств…

*

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

Как посмотреть что в нем

Ну для начала (на всякий случай) было бы неплохо, если бы вы выделили какое-нибудь слово (фразу) и скопировали ее (сочетание Ctrl+C).

Затем следует нажать сочетание клавиш «WIN»+»V» (можно также попробовать «Win»+».», на ноутбуках возможно Fn+Win+V) — далее перед вами появится спец. окно, в котором есть вкладка с буфером обмена. В этой вкладке можно просмотреть всё, что вы копировали ранее при работе (в этом сеансе).

См. мой пример ниже. 👇

Примечание: журнал буфера обмена появился в Windows 10 в версии 1803 (в 2018г.). В некоторых версиях Windows может быть отключен (включается простым нажатием одноименной кнопки в истории буфера обмена).

img-Kak-otkryit-zhurnal-bufera-obmena-i-posmotret-ego-soderzhimoe.png

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

В моем примере в буфере содержится неск. скопированных слов из этой заметки (я их вставлял туда-сюда, пока оформлял пояснения… 🙂). На скриншоте ниже приведен пример. 👇

Кстати, чтобы вставить что-нибудь из буфера обмена — сделайте следующее:

  • поставьте курсор мышки в нужное место;
  • нажмите Win+V (чтобы появилось заветное окно 👇);
  • и нажмите левой кнопкой мыши по нужной строке из списка. Вроде всё просто?! 👌

img-Vstavka-iz-bufera-obmena.png

Вставка из буфера обмена

*

Как очистить его историю

Вариант 1:

  1. нажать Win+V, чтобы появилось окно управления буфером обмена;
  2. нажать кнопку «Очистить все». 👇

Вариант 2: зайти в параметры Windows и отключить ведение журнала буфера обмена. Об этом чуть ниже.

img-Knopka-ochistit-vsyo-chto-esli-v-bufere.png

Кнопка очистить всё, что если в буфере

Если очистка выполнена успешно — вы увидите надпись «Здесь ничего нет». В моем примере ниже показано, как это выглядит. 👇

img-Zdes-nichego-net.png

Здесь ничего нет

*

Настройки журнала буфера обмена в Windows

Изменить некоторые настройки буфера обмена можно во вкладке параметров Windows — в разделе «Система».

📌 В помощь!

Как открыть параметры в Windows 11/10 — [см. инструкцию]

img-Sistema-bufer-obmena.png

Система — буфер обмена

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

Кстати, тут же есть ссылки на справку и подсказке по работе с ним (правда, почему-то в некоторых версиях Windows они открываются на нагл. языке… И хорошо, если браузер сделает перевод… 🙂)

img-ZHurnal-bufera-obmena-vklyuchen.png

Журнал буфера обмена включен!

*

PS 

Кстати, в MS Word есть свой буфер обмена. Чтобы его посмотреть — нажмите по маленькой стрелочке во вкладке «Главная», см. мой пример ниже. 👇

img-Bufer-obmena-v-Word.png

Буфер обмена в Word

*

Дополнения по теме можно оставить в комментариях ниже.

Успехов! 

👋

Все способы:

  • Способ 1: Вставка текущего содержимого
  • Способ 2: Открытие журнала буфера обмена
  • Способ 3: Просмотр журнала буфера обмена в сторонних приложениях
  • Способ 4: Сторонние программы
    • Clipdiary
    • FreeClipViewer
  • Вопросы и ответы: 0

Способ 1: Вставка текущего содержимого

Самый простой вариант просмотра текущего содержимого буфера обмена в Windows 11 — вставка его в удобном приложении. Стоит учитывать, что не все программы поддерживают вставку музыки или видео, ограничиваясь исключительно текстом и изображениями. Используйте стандартную горячую клавишу Ctrl + V или найдите кнопку «Вставка» либо «Paste» в используемой программе.

Как открыть буфер обмена на Windows 11-025

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

Способ 2: Открытие журнала буфера обмена

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

  1. Вызов же самого журнала буфера обмена осуществляется путем использования стандартного сочетания клавиш Win + V, после чего на экране появится соответствующее окно.
  2. Как открыть буфер обмена на Windows 11-01

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

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

  1. Откройте меню «Пуск» и нажмите по значку «Параметры», отыскав его в списке закрепленных.
  2. Как открыть буфер обмена на Windows 11-05

  3. На панели слева выберите раздел «Система» и справа кликните по категории «Буфер обмена».
  4. Как открыть буфер обмена на Windows 11-06

  5. Найдите компонент «Журнал буфера обмена» и переместите его переключатель в состояние «Вкл.».
  6. Как открыть буфер обмена на Windows 11-07

  7. Если вы хотите синхронизировать журнал с другими устройствами, на которых выполнен вход в вашу учетную запись Microsoft, активируйте дополнительный переключатель и выберите, в каком режиме осуществлять синхронизацию.
  8. Как открыть буфер обмена на Windows 11-08

Способ 3: Просмотр журнала буфера обмена в сторонних приложениях

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

  1. В том же Microsoft Excel и других программах от этого разработчика понадобится открыть вкладку «Главная» и нажать по кнопке со стрелкой вниз возле надписи «Буфер обмена».
  2. Как открыть буфер обмена на Windows 11-09

  3. Вы увидите список из всех записей, которые были добавлены в буфер обмена за время активной работы средства создания электронных таблиц.
  4. Как открыть буфер обмена на Windows 11-010

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

Способ 4: Сторонние программы

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

Clipdiary

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

Скачать Clipdiary с официального сайта

  1. На официальном сайте Clipdiary вы можете выбрать полную версию софта или скачать портативную, чтобы обойтись без предварительной установки, а сразу запускать ПО через исполняемый файл.
  2. Как открыть буфер обмена на Windows 11-012

  3. Во время первого запуска на экране отобразится Мастер настроек, в котором понадобится нажать «Далее», чтобы перейти к следующему шагу.
  4. Как открыть буфер обмена на Windows 11-013

  5. Выберите горячую клавишу, которая будет отвечать за вызов журнала буфера обмена Clipdiary. Если стандартное сочетание вам подходит, просто переходите далее.
  6. Как открыть буфер обмена на Windows 11-014

  7. Теперь на экране появится инструкция о том, как осуществляется вызова самого окна, выбор записи для вставки и получение самих данных.
  8. Как открыть буфер обмена на Windows 11-015

  9. В следующем шаге вам будет предложено немного попрактиковаться. Сначала скопируйте несколько шаблонных записей в буфер обмена через специально отведенную для этого кнопу. Далее активируйте курсор ввода в поле и нажмите Ctrl + D для вызова окна с журналом (используйте другую комбинацию клавиш, если изменяли ее ранее).
  10. Как открыть буфер обмена на Windows 11-016

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

  13. Точно таким же образом осуществляется и последующее взаимодействие Clipdiary. Вам понадобится только активировать курсор ввода в любом используемом приложении, затем вызвать журнал и выбрать одну из записей для вставки. Если вы поняли, как работать с софтом, отметьте галочкой соответствующий пункт и переходите далее.
  14. Как открыть буфер обмена на Windows 11-018

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

  17. После выхода из окна Мастера настроек еще раз попробуйте попрактиковаться с Clipdiary, открыв совершенно любой текстовый документ, после чего переходите к штатной работе с компьютером и используйте журнал буфера обмена по необходимости.
  18. Как открыть буфер обмена на Windows 11-020

FreeClipViewer

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

Скачать FreeClipViewer с официального сайта

  1. FreeClipViewer распространяется в портативном виде, поэтому вам достаточно будет скачать архив с официального сайта и распаковать находящийся в нем исполняемый файл в любое место на компьютере.
  2. Как открыть буфер обмена на Windows 11-021

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

  5. Для этого нажмите кнопку «Сохранить» на верхней панели и выберите место на ПК, куда сохранить файл в фирменном формате.
  6. Как открыть буфер обмена на Windows 11-023

  7. Для просмотра содержимого буфера обмена в другом формате используйте кнопки для переключения на панели слева.
  8. Как открыть буфер обмена на Windows 11-024

Наша группа в TelegramПолезные советы и помощь

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Виджет калькулятор для windows xp
  • Как включить панель быстрого доступа в проводнике windows 11
  • Какие программы нужны для компьютера windows 10 после установки виндовс 10
  • Отключить проверку цифровой подписи программы windows 10
  • Windows search for file contents