Applies ToWindows 11 Windows 10
Использование буфера обмена
При копировании содержимого на компьютер оно автоматически копируется в буфер обмена для вставки. Вы можете вставить несколько элементов из журнала буфера обмена, а также закрепить элементы, которые вы, как правило, используете все время, и синхронизировать журнал буфера обмена с облаком.
Ниже приведены ответы на некоторые вопросы, связанные с буфером обмена.
Открытие параметров буфера обмена
Чтобы включить буфер обмена в первый раз, выберите клавиши с логотипом Windows + V, а затем выберите Включить.
Чтобы синхронизировать элементы буфера обмена с компьютером, необходимо убедиться, что функция синхронизации включена.
-
Выберите Пуск > Параметры > системный > буфер обмена .
-
Установите переключатель журнал буфера обмена на всех устройствах в значение Вкл.
Примечание: Функция синхронизации привязана к вашей учетной записи Майкрософт или рабочей учетной записи, поэтому не забудьте использовать одни и те же данные для входа на всех устройствах.
Вы можете быстро очистить все, кроме закрепленных элементов, на устройстве и в облаке.
-
Выберите Пуск > Параметры > системный > буфер обмена .
-
В области Очистить данные буфера обмена выберите Очистить.
Вы также можете очистить журнал буфера обмена устройства, выбрав клавиши с логотипом Windows +V, а затем выбрав параметр Очистить все в верхней части экрана.
Вы можете очистить любой конкретный элемент в буфере обмена.
-
Выберите Клавиша с логотипом Windows + V.
-
Рядом с рассматриваемым элементом выберите Дополнительные сведения (…), а затем — Удалить .
Устранение неполадок с буфером обмена
Убедитесь, что вы включили журнал буфера обмена. Чтобы включить буфер обмена в первый раз, выберите клавиши с логотипом Windows + V и выберите Включить.
Журнал буфера обмена очищается при каждом перезапуске компьютера, за исключением закрепленных элементов.
Вы можете настроить автоматическую синхронизацию скопированных элементов с другими устройствами.
Примечание: Функция синхронизации привязана к вашей учетной записи Майкрософт или рабочей учетной записи, поэтому не забудьте использовать одни и те же данные для входа на всех устройствах.
-
Выберите Пуск > Параметры > системный > буфер обмена .
-
В разделе Журнал буфера обмена на устройствах установите переключатель в значение Вкл.
-
Выберите Автоматически синхронизировать текст, который я копируем.
Примечание: Параметр Вручную синхронизировать текст, который я копируем, означает, что вам нужно открыть журнал буфера обмена (клавиша с логотипом Windows + V) и вручную нажать кнопку синхронизации в элементе буфера обмена. Затем текст будет отправлен в облако и синхронизирован с другими устройствами.
Размеры элементов не должны превышать 4 МБ. Поддерживаются форматы файлов text, HTML и bitmap.
Журнал буфера обмена рассчитан не более чем на 25 скопированных записей. Система автоматически удаляет старые элементы(если они не закреплены), чтобы освободить место для новых.
Нужна дополнительная помощь?
Нужны дополнительные параметры?
Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.
Время на прочтение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 может быть отключен (включается простым нажатием одноименной кнопки в истории буфера обмена).
Как открыть журнал буфера обмена и посмотреть его содержимое
В моем примере в буфере содержится неск. скопированных слов из этой заметки (я их вставлял туда-сюда, пока оформлял пояснения… 🙂). На скриншоте ниже приведен пример. 👇
Кстати, чтобы вставить что-нибудь из буфера обмена — сделайте следующее:
- поставьте курсор мышки в нужное место;
- нажмите Win+V (чтобы появилось заветное окно 👇);
- и нажмите левой кнопкой мыши по нужной строке из списка. Вроде всё просто?! 👌
Вставка из буфера обмена
*
Как очистить его историю
Вариант 1:
- нажать Win+V, чтобы появилось окно управления буфером обмена;
- нажать кнопку «Очистить все». 👇
Вариант 2: зайти в параметры Windows и отключить ведение журнала буфера обмена. Об этом чуть ниже.
Кнопка очистить всё, что если в буфере
Если очистка выполнена успешно — вы увидите надпись «Здесь ничего нет». В моем примере ниже показано, как это выглядит. 👇
Здесь ничего нет
*
Настройки журнала буфера обмена в Windows
Изменить некоторые настройки буфера обмена можно во вкладке параметров Windows — в разделе «Система».
📌 В помощь!
Как открыть параметры в Windows 11/10 — [см. инструкцию]
Система — буфер обмена
В соответствующей вкладке можно очистить журнал буфера обмена или вовсе откл. его работу, есть возможность настроить передачу данных между различными устройствами.
Кстати, тут же есть ссылки на справку и подсказке по работе с ним (правда, почему-то в некоторых версиях Windows они открываются на нагл. языке… И хорошо, если браузер сделает перевод… 🙂)
Журнал буфера обмена включен!
*
PS
Кстати, в MS Word есть свой буфер обмена. Чтобы его посмотреть — нажмите по маленькой стрелочке во вкладке «Главная», см. мой пример ниже. 👇
Буфер обмена в Word
*
Дополнения по теме можно оставить в комментариях ниже.
Успехов!
👋
Updated March 9, 2023
The Clipboard is one of the most widely used features inside Windows. It used to be just for copying a small amount of text, but not anymore. Let’s look at all the Clipboard features inside Windows.
In the early days of computing, users could store small amounts of data in the computer’s RAM (Random Access Memory), which was called the Paste Buffer. You could only save one piece of data at a time, and every time you copied a new piece of data, the last piece was erased.
But over the decades, the Paste Buffer, now known as the Clipboard, has evolved into a valuable and essential tool for productivity. The Clipboard in Windows 10 and Windows 11 can hold multiple pieces of text and images. And how you access the Clipboard has changed over the years.
Before you can take advantage of the full capability of the Windows Clipboard, you have to do a couple of things. The first thing you need to do is to make sure that the Clipboard history feature is turned on.
With Clipboard history turned on, you can view and paste all of the different items you have copied to the Clipboard. You will need to go to Windows Settings to make sure that this feature is activated.
How to get to the Clipboard section of the Windows 11 Settings app
- Open the Windows Settings app by either:
- Left-click on the Start button to bring up the Start menu. In the upper right-hand corner of the Start menu, left-click on All apps. Scroll down the list of programs and left-click on Settings.
- Right-click on the Start button to bring up the Power User menu. On the Power User menu, left-click on Settings.
- Press the Windows logo key + I.
- Left-click on the System category in the left-hand column.
- Scroll down the right-hand column and left-click on the Clipboard category.
How to get to the Clipboard section of the Windows 10 Settings app
- Open the Windows Settings app by either:
- Left-click on the Start button, which will bring up the Start menu. On the Start menu left-click on the gear icon (Settings).
- Right-click on the Start button, which will bring up the Power User menu. On the Power User menu, left-click on Settings.
- Press the Windows logo key + I.
- Left-click on the System category.
- Scroll down the left-hand column and left-click on the Clipboard category.
Once you are in the Clipboard section, make sure that the Clipboard history is turned on.
You can also clear all of the items on the Clipboard from here.
Now copying text to the Clipboard has always been pretty straightforward, but there may be times you want to copy images to it. The second thing to do is to make sure you have all the programs you can use to capture images.
The first screen capture program built into Windows is the Snipping Tool, and it has been in Windows since Windows 7, and it works well for capturing anything on-screen (if you can see it, you can capture it).
And it automatically copies whatever you snip to the Clipboard. But it does prompt you to save your snip to a file when you close it.
And the second built-in app for capturing screen snips is the Snipping Bar.
Microsoft included it in Windows 10 Version 1809, and few people know about it. That’s because you have to use a combination of three (3) keys on the keyboard to bring it up (Windows logo key + Shift + S).
The downside of the Snipping Bar is that it only captures one snip at a time. Every time you want to capture a screen snip, you have to press the Windows logo key + Shift + S keys. The Snipping Tool will capture as many snips as you like until you close it.
We are now all set to start copying items to the Clipboard. Remember that you can paste text from the Clipboard into almost any program, but you can only paste images into programs that can display images.
For example, you can paste text from the Clipboard into Notepad but not images. But can paste both text and images from the Clipboard into Paint or Wordpad.
There are several different ways to copy and paste from the Clipboard. Here are a few of the most common ways to do it.
Ways to copy text to the Clipboard
Highlight the text you want to copy and then:
- Press Ctrl + C on the keyboard
- Right-click on the highlighted text and select Copy from the context menu
Ways to copy graphics to the Clipboard
Highlight the image you want to copy and then:
- Press Ctrl + C on the keyboard
If you can not highlight the image then:
- Right-click on it and select Copy.
- Use the Snipping Tool or the Snipping Bar to capture a snip of it.
Ways to paste from the Clipboard
Select where you want to place the graphic or text in the program of your choice then:
For more information on the keyboard shortcuts discussed in this article, follow the links below.
Windows logo key shortcuts for Windows 11
Windows logo key shortcuts for Windows 10
General keyboard shortcuts
Check out the following video for examples of copying to and pasting from the Clipboard inside Windows 10.
de6bb991-3ef1-4cfe-831c-5bcea7d4f536|1|5.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04
Всё, что нужно знать о полезной функции для более продуктивной работы.
Что такое журнал буфера обмена
Стандартный буфер, который все привыкли использовать через контекстное меню «Скопировать» и «Вставить» или через сочетания Ctrl + C, Ctrl + V, имеет лишь одну «ячейку памяти». Чего бывает очень мало. Начиная с Windows 10 Microsoft внедрила журнал буфера обмена, который умеет запоминать до 25 элементов. Копировать и вставлять при этом можно текст, ссылки, изображения и другой контент.
Как включить журнал буфера обмена Windows 10 и Windows 11
По умолчанию функция неактивна. Её можно активировать следующим образом.
Удерживая клавишу Win (с символом «окошка»), нажмите V на клавиатуре. Вы увидите предложение включить журнал буфера обмена с помощью соответствующей кнопки.
Если при нажатии Win + V ничего не происходит, то активировать функцию можно в настройках. Для этого сделайте правый клик по меню «Пуск» и выберите «Параметры». Далее в разделе «Система» → «Буфер обмена» включите тумблер как на скриншоте выше.
Как просмотреть буферы обмена Windows 10 и Windows 11
После включения система начнёт хранить всё, что вы копируете или вырезаете, в буфере обмена.
Для просмотра журнала нажмите Win + V. На экране отобразится плавающее окошко со списком сохранённых элементов, которое можно переместить в удобное место. Запомнить сочетание легко — как обычная вставка, только вместо Ctrl используется клавиша Win.
Как вставить куда-то скопированный элемент
Для вставки элемента в документ или, например, в строку поиска достаточно кликнуть по нужному тексту, ссылке или изображению в списке, после чего буфер автоматически закроется. Помимо этого можно использовать стрелки клавиатуры для навигации и Enter для вставки.
Как закрепить нужный элемент
Если вам часто приходится вставлять одинаковые данные вроде реквизитов, ссылок или номеров телефонов, можно закрепить их в буфере, чтобы они всегда были под рукой.
Для этого просто кликните по значку иголки напротив нужного элемента.
Как очистить журнал буфера обмена
Как упоминалось выше, в памяти буфера всего 25 ячеек. При их заполнении во время записи новых элементов самые старые стираются.
Каждую из них можно удалить по отдельности, кликнув на троеточие в списке и выбрав значок корзины. Для освобождения места во всём буфере используется кнопка «Очистить всё».
При этом буфер автоматически очищается после перезагрузки и выключения компьютера. Из памяти исчезают все элементы, кроме закреплённых.