Время на прочтение
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 — вставить из буфера обмена.
Где находится буфер обмена на ноутбуке? Разницы между обыкновенным ПК и ноутбуком нет. Буфер обмена предоставляет операционная система, все хранится в оперативной памяти. Как посмотреть буфер обмена? Для этого на Windows 10 и Windows 11 предусмотрено сочетание клавиш Win+V, которое открывает журнал буфера обмена. Если он не активирован, система предложит это сделать после нажатия. Если этого не произойдет, включите журнал вручную:
- Через меню «Пуск» откройте параметры системы.
- Войдите в системный раздел и откройте категорию «Буфер обмена».
- Активируйте журнал буфера обмена.
В этом же меню можно настроить синхронизацию между другими устройствами с помощью буфера обмена. Для этого предусмотрен параметр «Синхронизация между устройствами». Активировав эту функцию система автоматически синхронизирует копируемый текст и файлы для переноса на другой ПК. Учтите, что функция синхронизации привязана к учетной записи Microsoft или рабочей учетной записи, поэтому перенос информации возможен только в среде этой учетной записи.
Как открыть буфер обмена на Android? Чтобы посмотреть содержимое буфера обмена, вызовите клавиатуру. В верхней части нажмите на иконку списка. Это и есть буфер обмена. Если открываете его первый раз, будет предложено активировать буфер обмена. Сделайте это, переместив ползунок в активное положение.
Когда сохраняете текст на Android, служба буфера обмена сохраняет информацию в оперативной памяти. На стандартных телефонах Android не можете получить доступ к этим данным напрямую. На телефонах Samsung история буфера обмена хранится в файле в каталоге /data/Clipboard.
Даже на Samsung этот файл недоступен без рутирования смартфона, но на любом телефоне Android с помощью приложения для управления буфером обмена можете получить доступ к его истории.
Очистка буфера обмена на компьютере и на телефоне
Находящаяся в буфере обмена информация никоим образом на работоспособность устройств не влияет. Но по разным причинам бывает необходимо очистить историю буфера обмена. Как правило, очистить его необходимо, если пользователь скопировал логин или пароль, а после него гаджетом воспользуется посторонний человек и узнает персональные данные. Рассмотрим способы чистки этого временного хранилища на ПК и Android подробнее.
Как очистить буфер обмена?
На системе Windows все просто. Для этого выполните такие действия:
- Войдите в параметры системы через меню «Пуск».
- Откройте раздел «Система».
- Откройте категорию «Буфер обмена».
- Нажмите на кнопку внизу «Очистить».
На системе Mac выполните следующее:
- Войдите в приложение Finder.
- Запустите Terminal. Найдете его в папке «Утилиты»→«Приложения».
- Впишите pbcopy</dev/null в окне приложения и нажмите Enter.
После этого буфер обмена будет чист.
В программах Office есть свой буфер обмена. Чтобы его открыть, предусмотрена специальная кнопка для его вызова во вкладке «Главная». Для очистки буфера через программы Office выполните такие действия:
- Откройте буфер обмена.
- Появится соответствующее окно в левой части экрана. Нажмите «Очистить все».
Если хотите удалить только отдельный файл или текст, щелкните по стрелочке справа от отдельного фрагмента и удалите.
Очистка буфера обмена на телефоне
На портале WikiHow предложены такие приложения для просмотра буфера обмена, как Gboard и Clipper. Эти приложения позволяют просматривать его содержимое. Установите их на телефон, разрешите им работать поверх других приложений. Райан Дубе рассказал, что с их помощью можно очистить буфер обмена. Если используете диспетчер буфера обмена Clipper, заметите параметр «Удалить», когда выберете три точки справа от выделения. Используйте его, чтобы очистить элементы буфера обмена.
Другое решение — включить и использовать клавиатуру Gboard, которая идет вместе с новыми телефонами Android. Если этого приложения нет, установите его через Google Play, а затем выполните такие действия:
- Откройте приложение для обмена сообщениями на Android и нажмите на символ + слева от текстового поля.
- Выберите значок клавиатуры. Когда она появится, выберите символ > вверху. Здесь можете нажать на значок буфера обмена, чтобы открыть его.
- Если никогда раньше не использовали буфер обмена на телефоне, увидите уведомление о включении буфера обмена Gboard. Для этого нажмите «Включить буфер обмена».
- При включенном буфере обмена каждый раз, когда копируете что-либо, а затем снова нажимаете на буфер обмена на клавиатуре Google Android, увидите историю всех последних добавленных элементов.
- Чтобы удалить любой из этих элементов, сначала коснитесь значка редактирования.
- Выберите каждый элемент, который хотите удалить, и коснитесь значка корзины.
Менеджер буфера обмена, который поставляют со встроенным приложением для клавиатуры, во многом зависит от версии и марки телефона Android. Клавиатура обычно становится основным способом доступа к буферу обмена и управления им без приложения.
Буфер обмена в iOS довольно ограничен. Он может хранить только одну часть информации за раз и не доступен пользователю напрямую. Адам С. Доуд отметил, замена текста в буфере обмена пустым текстом — хороший способ эффективно стереть сохраненную там информацию. Все, что нужно сделать, это скопировать пробел, и все будет готово. Вот как это сделать:
- Откройте любое приложение, в котором есть поле ввода текста, например «Заметки».
- Введите два пробела в поле поиска.
- Нажмите и удерживайте пробелы и выберите «Копировать».
Вот и все. Любые данные, которые были в буфере обмена, будут заменены двумя пробелами. Чтобы убедиться, что буфер обмена практически пуст (содержит два пробела), все, что нужно сделать, это вставить его в приложение:
- Откройте любое приложение с текстовым полем.
- Нажмите и удерживайте поле поиска вверху.
- Коснитесь «Вставить».
Очистка буфера обмена — мера предосторожности, которая позволяет соблюсти конфиденциальность и уберечь личную информацию от посторонних глаз. Не все, что копируете и вставляете, обязательно представляет угрозу безопасности.
Копирование паролей, банковской информации, номеров телефонов, адресов может привести к их воровству. Чтобы какие-либо из этих сведений не были украдены, очистите буфер обмена, выполнив описанные выше шаги.
From Wikipedia, the free encyclopedia
For the physical equivalent, see Clipboard.
The clipboard is a buffer that some operating systems provide for short-term storage and transfer within and between application programs. The clipboard is usually temporary and unnamed, and its contents reside in the computer’s RAM.[1]
The clipboard provides an application programming interface by which programs can specify cut, copy and paste operations. It is left to the program to define methods for the user to command these operations, which may include keybindings and menu selections. When an element is copied or cut, the clipboard must store enough information to enable a sensible result no matter where the element is pasted. Application programs may extend the clipboard functions that the operating system provides. A clipboard manager may give the user additional control over the clipboard. Specific clipboard semantics vary among operating systems, can also vary between versions of the same system, and can sometimes be changed by programs and by user preferences.
Windows, Linux and macOS support a single clipboard transaction.[2][3]
History[edit]
Clipboards as buffers for small text snippets were first used by Pentti Kanerva when he used it to store deleted texts in order to restore them.[4] Since one could delete a text in one place and restore it in another, the term «delete» wasn’t what one would expect in this case. Larry Tesler renamed this in 1973 as cut, copy, and paste and coined the term «clipboard» for this buffer, since these techniques need a clipboard for temporary saving the copied or cut data.[5]
Data formats[edit]
Applications communicate through the clipboard by providing either serialized representations of an object, or a promise (for larger objects).[6] In some circumstances, the transfer of certain common data formats may be achieved opaquely through the use of an abstract factory; for example, Mac OS X uses a class called NSImage to provide access to image data stored on the clipboard, though the actual format of the image data backing the object is hidden. The sending and receiving application negotiate the formats which can be transferred in between them, oftentimes with the active GUI widget responsible for providing acceptable type transformations. The pasteboard allows for transfer of common items such as URLs, colors, images, strings, attributed strings (Rich text), and sounds. The operating system and GUI toolkit may provide some common conversions, for example converting from rich text to plain text and vice versa. Various type identifiers for data transfer are supported by modern operating systems, which may automatically provide acceptable mappings between type systems, such as between MIME and Uniform Type Identifier.[7][8]
Computer security[edit]
Clipboard hijacking is an exploit in which a person’s clipboard’s content is replaced by malicious data, such as a link to a malicious web site.[9] While some security-holes were patched, JavaScript can still be used to modify clipboard content via an attack dubbed ‘pastejacking’.[10][11] Dylan Ayrey who developed the attack set up a website that demonstrates how this exploit can be used to trick a user into running commands they didn’t want to run.[12]
There have been exploits where web pages grab clipboard data. In early 2013 researchers exposed risks stemming from Android-based password managers and documented how passwords in 21 of the most popular of these apps could be accessed by any other app on an Android device including those with extremely low-level privileges.[13] Joe Siegrist notes that this is an «OS-level issue that impacts everything running on Android».[14][1]
Clipboard management and extensions[edit]
Clipboard manager extensions add functionality to the integrated clipboard functions of an operating system. They are applications that enable the user to manipulate the clipboard. On platforms such as Linux that use multiple incompatible GUI toolkits, clipboard managers are often used to transfer data between applications using different such frameworks.
When a clipboard manager provides multiple cut and paste transactions, the clipboard is treated as a stack or scrap book, with new cuts and copies being placed on a list of recent transactions. The standard paste operation copies the most recent transaction, while specialized pastes provide access to the other stored transactions. These managers generally also provide a window that displays the transaction history and allows the user to select earlier copies, edit them, change their format and even search amongst them.
Since most operating systems (e.g. Windows, macOS, Linux, X11, Android, iOS) do not save the clipboard contents to any persistent storage – when a user logs out or reboots the system the clipboard contents are deleted – an added functionality is to save the clipboard persistently. Another example is making the local clipboard work with online applications by saving the clipboard data to the online location upon a copy or cut event, making this data available to online applications for pasting. Clipboard managers can also serve as tools to overcome the limitation of software not supporting copying and pasting (for example, while logging into remote Windows server, one cannot copy and paste their user name and password).
Operating system-specific clipboards[edit]
AmigaOS[edit]
The Amiga operating system uses 256 units, so one has multiple clipboards at the same time.[15]
Android[edit]
Android provides a clipboard that can hold up to one clip object and is accessible system-wide. Simple text is stored directly in the clipboard; complex data are stored by reference. The clip object has one of three formats: text string, URI object, or intent.[16]
To interact with the clipboard, an app uses the class ClipboardManager[17] and system calls to cut, copy, and paste objects.
In Android 8.0, the clipboard first appears in the user interface: In a situation where the user prepares to paste from the clipboard, a «Clipboard» option appears that gives the user access to many objects copied or cut to the clipboard in the past. Apart from that, and in earlier versions, the user has no access to the clipboard except in apps that make it available to the user.
iOS[edit]
The clipboard is called «pasteboard» in iOS similar to OS X. Apps on this operating system can create additional pasteboards, called instances of the UIPasteboard class, which can be public or private. One instance can hold a single item or multiple items in different formats.[18]
The formats are identified by Uniform Type Identifiers (UTI).[19]
The data contained in the pasteboard cannot be accessed via the GUI but only from the system and applications
macOS[edit]
The clipboard in macOS holds one item in multiple available formats.
The contents of the clipboard can be viewed by selecting the Show Clipboard menu item from the Finder’s Edit menu. The raw data and the stored formats can be seen using the ClipboardViewer.[20]
Using the following commands the clipboard can be accessed from the command line:[21][22]
$ # to copy data into the clipboard: $ echo 'hello world' | pbcopy $ # to paste from the clipboard: $ pbpaste hello world
Microsoft Windows and ReactOS[edit]
The ReactOS |
|
Developer(s) | Microsoft, ReactOS Contributors |
---|---|
Operating system | Windows, ReactOS |
Type | Command |
License | Windows: Proprietary commercial software ReactOS: GNU General Public License |
Website | docs |
The clipboard in Microsoft Windows and ReactOS holds one item in multiple available formats.
Every item has at least one clipboard format, but can have different types of format of the same data. The three different types of possible formats are:[23]
- standard formats[24] (e.g. CF_BITMAP, or CF_UNICODETEXT),
- registered formats[25] (e.g. CF_HTML)
- private formats for internal use
Up to and including Windows XP the clipboard could be accessed via the ClipBook Viewer application.[26] In newer versions of Windows the content can be accessed via clipboard managers.
Data can be stored to the Windows[27] and ReactOS[28] clipboard via command line using the clip command:[29]
$ # to paste the content of a folder to the clipboard: $ dir | clip
The clipboard can also be accessed via PowerShell:[30][31]
# to paste the content of a directory to the clipboard Set-Clipboard -Path "C:\directory\" # to get the content of the clipboard Get-Clipboard
Windows 10 and Windows 11 include the Clipboard application, allowing for the storage of multiple text-based clipboard items. It can be accessed by pressing Windows+V.
X Window System[edit]
The X Window System commonly used on Unix and Linux systems provides three clipboards, which are named «CLIPBOARD», «PRIMARY» and «SECONDARY».[32] The usage and handling of various selections is not standardized. However, most modern toolkits and desktop environments, such as GNOME or KDE, follow a widely accepted convention, outlined in the freedesktop.org specification.[33] One selection, CLIPBOARD, is used for traditional clipboard semantics, with shortcuts identical to Windows. Another selection, PRIMARY, is an X11-specific mechanism. Data is «copied» immediately upon highlighting and pasted with the third (middle) mouse button.[34] This copied data is usually separated from the CLIPBOARD selection and does not change its contents.[35] SECONDARY was planned as an alternative to PRIMARY but is only used inconsistently.[32]
There are two command line tools (xsel and xclip) which can access the clipboard:[36]
$ # to paste standard output to the clipboard using xclip $ echo text | xclip -in -selection clipboard $ # to paste standard output to the clipboard using xsel $ echo text | xsel --clipboard
The main difference to OS X and Windows is that no data is actually stored in the CLIPBOARD-clipboard but only the reference to the copied or cut data. The application claims the ownership of the CLIPBOARD selection and communicates its ownership to the X Server.[34] When pasting this data, the data and its available formats are requested from the application that owns the CLIPBOARD selection.[37]
APIs[edit]
Applications can access the clipboard or its data via APIs.
JavaScript[edit]
In JavaScript a class which detects changes in the users clipboard data (ClipboardEvent)[38] and functions to alter the content of a clipboard or read from it (clipboardData.getData(), clipboardData.setData())[39] exist, but aren’t supported by every browser since altering the clipboard of a user can represent a security issue.
Qt[edit]
In Qt a wrapper for every supported platform[40] exists. It provides access to window system clipboards with the use of the class QClipboard. This class facilitates access to common data types by functions.[41] The data type of the element stored in the clipboard is indicated via MIME and MIME data can also be put in the clipboard with help of functions from this class.
See also[edit]
- Clipboard manager
- Cut, copy, and paste
References[edit]
- ^ a b «What is a Clipboard in Computing? — Definition from Techopedia». Techopedia.com. Archived from the original on 2018-02-02. Retrieved 2018-02-01.
- ^ Kimmatkar, Sarang B. (2014). «Extending functionalities of default clipboard». (IJCSIT) International Journal of Computer Science and Information Technologies 5. 6.
- ^ Stephens, Rod (2010). Visual Basic 2010 : programmer’s reference. Library Genesis. Indianapolis, IN : Wiley Pub., Inc. ISBN 978-0-470-49983-2.
- ^ Moggridge, Bill (2007). Designing interactions. Cambridge, Massachusetts: MIT Press. p. 65ff. ISBN 9780262134743.
- ^ Larry Tesler. «A User Experience Retrospective». Archived from the original on 2018-02-02. Retrieved 23 January 2018.
- ^ «Dragging Files». developer.apple.com. Retrieved 9 December 2018.
- ^ «NSPasteboard — AppKit | Apple Developer Documentation». developer.apple.com. Archived from the original on 2018-05-26. Retrieved 9 December 2018.
- ^ «Adopting Uniform Type Identifiers». developer.apple.com. Archived from the original on 2018-07-21. Retrieved 9 December 2018.
- ^ «What is clipboard hijack attack? — Definition from WhatIs.com». WhatIs.com. Archived from the original on 2017-01-05. Retrieved 4 January 2017.
- ^ Chirgwin, Richard. «Pastejack attack turns your clipboard into a threat». The Register. Archived from the original on 2017-01-04. Retrieved 4 January 2017.
- ^ «Researcher warns of ‘pastejacking’ hack attacks targeting users’ clipboards». Graham Cluley. 26 May 2016. Archived from the original on 2017-01-05. Retrieved 4 January 2017.
- ^ «dxa4481/Pastejacking». GitHub. Archived from the original on 2017-01-04. Retrieved 4 January 2017.
- ^ Fahl, Sascha; Harbach, Marian; Oltrogge, Marten; Muders, Thomas; Smith, Matthew (2013). «Hey, You, Get Off of My Clipboard» (PDF). Financial Cryptography and Data Security. Lecture Notes in Computer Science. Vol. 7859. pp. 144–161. doi:10.1007/978-3-642-39884-1_12. ISBN 978-3-642-39883-4. Archived (PDF) from the original on 2017-09-19. Retrieved 4 January 2017.
- ^ «Using a password manager on Android? It may be wide open to sniffing attacks». Ars Technica. 21 November 2014. Archived from the original on 2017-01-04. Retrieved 4 January 2017.
- ^ «Clipboard Device — AmigaOS Documentation Wiki». wiki.amigaos.net. Archived from the original on 2018-02-05. Retrieved 2018-02-03.
- ^ «Copy and Paste | Android Developers». developer.android.com. Archived from the original on 2018-02-07. Retrieved 2018-02-06.
- ^ «ClipboardManager | Android Developers». developer.android.com. Archived from the original on 2018-02-07. Retrieved 2018-02-02.
- ^ «Pasteboard». developer.apple.com. Archived from the original on 2018-02-07. Retrieved 2018-02-01.
- ^ «Uniform Type Identifier». developer.apple.com. Archived from the original on 2018-02-07. Retrieved 2018-02-06.
- ^ «ClipboardViewer». developer.apple.com. Archived from the original on 2018-02-07. Retrieved 2018-02-06.
- ^ «Copy to clipboard from terminal in OS X». rogeriopvl.com. Archived from the original on 2013-08-15. Retrieved 2013-07-02.
- ^ «pbcopy(1) Mac OS X Manual Page». apple.com. Archived from the original on 2014-03-28. Retrieved 2013-07-02.
- ^ «Clipboard Formats (Windows)». msdn.microsoft.com. Archived from the original on 2018-02-07. Retrieved 2018-02-03.
- ^ «Standard Clipboard Formats (Windows)». msdn.microsoft.com. Archived from the original on 2018-02-07. Retrieved 2018-02-03.
- ^ «HTML Clipboard Format (Internet Explorer)». msdn.microsoft.com. Archived from the original on 2018-02-07. Retrieved 2018-02-03.
- ^ «View & Manage Clipboard In Windows 10/8/7». The Windows Club. 2013-04-12. Archived from the original on 2018-02-12. Retrieved 2018-02-06.
- ^ «clip | Microsoft Docs». Docs.microsoft.com. 2017-10-16. Retrieved 2019-09-26.
- ^ «reactos/base/applications/cmdutils/clip at master · reactos/reactos · GitHub». Github.com. Retrieved 2019-09-26.
- ^ «How to Copy Command Line Output to the Windows Clipboard». www.labnol.org. Archived from the original on 2018-02-07. Retrieved 2018-02-06.
- ^ sdwheeler. «Get-Clipboard (Microsoft.PowerShell.Management)». docs.microsoft.com. Archived from the original on 2018-01-26. Retrieved 2018-02-06.
- ^ sdwheeler. «Set-Clipboard (Microsoft.PowerShell.Management)». docs.microsoft.com. Archived from the original on 2018-02-07. Retrieved 2018-02-06.
- ^ a b «Clipboard — ArchWiki». wiki.archlinux.org. Archived from the original on 2018-02-17. Retrieved 2018-02-16.
- ^ «clipboards-spec». freedesktop.org. Archived from the original on 2014-12-24. Retrieved 2014-08-16.
- ^ a b «Copy & Paste, Drag & Drop [MI Wiki]». wiki.mi.ur.de (in German). Archived from the original on 2018-02-16. Retrieved 2018-02-16.
- ^ «gnu.org». www.gnu.org. Archived from the original on 2017-12-24. Retrieved 2018-02-16.
- ^ «Copying and Pasting To and From the System Clipboard On The Command Line — Fernando Basso». fernandobasso.github.io. Archived from the original on 2018-02-07. Retrieved 2018-02-06.
- ^ «X Selections, X Cut Buffers, and Emacs Kill Rings». www.jwz.org. Archived from the original on 2018-03-04. Retrieved 2018-02-02.
- ^ «Clipboard API and events – ClipboardEvent». www.w3.org. Archived from the original on 2018-01-28. Retrieved 2018-02-08.
- ^ «Clipboard API and events – Synchronous Clipboard API». www.w3.org. Archived from the original on 2018-01-28. Retrieved 2018-02-08.
- ^ «platforms\plugins\src — qt/qtbase.git — Qt Base (Core, Gui, Widgets, Network, …)». code.qt.io. Archived from the original on 2018-02-09. Retrieved 2018-02-02.
- ^ «QClipboard Class | Qt GUI 5.10». doc.qt.io. Archived from the original on 2018-02-02. Retrieved 2018-02-02.
Further reading[edit]
- Stanek, William R. (2008). Windows Command-Line Administrator’s Pocket Consultant, 2nd Edition. Microsoft Press. ISBN 978-0735622623.
- McElhearn, Kirk (2006). The Mac OS X Command Line: Unix Under the Hood. John Wiley & Sons. ISBN 978-0470113851.
External links[edit]
- clip | Microsoft Docs
- 2. Peer-to-Peer Communication by Means of Selections in the ICCCM
- Windows Dev Center: Transferring Shell Objects with Drag-and-Drop and the Clipboard
- Microsoft Developer Network: How the Clipboard Works, Part 1
- Microsoft Developer Network: How the Clipboard Works, Part 2
- Microsoft Developer Network: Delayed Rendering of Clipboard Data
Многие пользователи персональных компьютеров знают про буфер обмена только то, что это слово как-то связано с сочетанием клавиш Ctrl+C. Когда такие люди, пытаясь закрыть какую-нибудь программу, вызывают окно «при работе с программой в буфер обмена была занесена информация, вы хотите удалить её из буфера обмена?», они могут несколько минут не решаться нажать ни на одну кнопку, боясь навредить своему компьютеру. На самом деле всё очень просто: буфер обмена — это файл, хранящийся в оперативной памяти компьютера, в котором сохраняются все файлы, копируемые пользователем, своеобразное промежуточное вместилище информации. Создание буфера обмена значительно облегчило жизнь рядовым пользователям, теперь у них нет необходимости держать в голове отрывки текста, адреса и другую нужную информацию, достаточно просто скопировать её в буфер обмена и вставить на нужное место, причём сделать это можно неограниченное количество раз.
Как пользоваться буфером обмена?
Буфером обмена хотя бы один раз пользовался, наверное, каждый пользователь ПК. Чтобы занести блок информации в буфер обмена нужно выделить его и скопировать одним из двух способов. Самый популярный способ занести информацию — нажать Ctrl+C. Второй способ — вызвать контекстное меню нажатием правой клавиши мыши (или специальной кнопки с изображением текста и стрелки курсора) и выбрать пункт «копировать». После этого выделенный файл сразу сохраняется в буфер обмена. Вызволить его оттуда можно нажатием Ctrl+V или с помощью пункта «вставить» контекстного меню. Чтобы вставить из буфера обмена в текстовое поле отрывок текста, поле сначала нужно активировать нажатием на нём левой кнопки мыши.
Где находится буфер обмена?
[ads]
Чтобы производить всевозможные операции с этим файлом, не нужно знать его местоположения. Но если ваше устройство работает на операционной системе Windows, и вам очень интересно, где прячется буфер обмена, то найти его можно по адресу: C:/Windows/system32/clipbrd.exe (файл также может называться clip.exe). При нажатии на этот файл появится окно, в котором вы увидите скопированный текст, картинку или видео. Из-за того, что буфер обмена находится в оперативной памяти компьютера, после выключения или перезагрузки устройства все расположенные в этом файле данные будут уничтожены. Кстати, буфер обмена есть не только у персональных компьютеров: у всех современных смартфонов, планшетов и нетбуков тоже есть этот файл.
Сколько вмещает в себя буфер обмена?
Вместительность буфера обмена определяется оперативной памятью устройства, в этот файл не может быть сохранён больший объём информации, чем объём оперативной памяти. Если у вашего устройства не очень много оперативки, а в буфере обмена сохранён, например, двухчасовой фильм, то система с высокой вероятностью будет сильно тормозить, пока буфер обмена не будет очищен.
Как очистить буфер обмена?
Существует три способа очистить буфер обмена: сложный, обычный и хитрый.
Сложный способ
Для удаления информации первым способом, сложным, придётся установить специальные программы. Самый небезопасный способ, потому что авторитетные производители программного обеспечения не занимаются этим. Зато созданием таких программ любят баловаться начинающие программисты, из-за чего в них почти всегда много ошибок, багов и неисправностей, если они вообще запускаются. К тому же, скачивая программу для очищения буфера обмена можно подхватить какой-нибудь опасный вирус, который будет угрожать устройству.
Обычный способ
Второй способ никак не сможет навредить системе и не требует устанавливать сторонние программы. Суть этого способа состоит в том, чтобы вручную найти буфер обмена (C:/Windows/system32/clipbrd.exe) и удалить его. Можно воспользоваться и тем, что буфер обмена расположен в оперативной памяти устройства: если выключить или перезагрузить систему, информация будет автоматически удалена из этого файла.
Хитрый способ
Вся «хитрость» этого способа заключается в том, что информация не удаляется из буфера обмена, а заменяется другими данными, занимающими меньше свободной оперативной памяти. Выделите небольшой фрагмент текста, символов 5-10, и сохраните его в буфер обмена. Если до этого текста в буфере обмена находился объёмный блок информации, то он автоматически заменяется на новые малогабаритные данные, благодаря чему нагрузка на оперативную память значительно снижается, и система получает дополнительные мощности из резерва, увеличивая скорость работы. Последний способ, хоть и не освобождает буфер обмена полностью, пользуется наибольшей популярностью у пользователей: он безопасный, быстрый и не требует установки дополнительного программного обеспечения.
P.S. Ну вот мы с вами и разобрались что такое буфер обмена, где находится и как с ним работать, всего доброго!
В этом уроке я расскажу, что такое буфер обмена, где он находится и как его открыть в Windows.
Буфер обмена — это часть оперативной памяти стационарного компьютера или ноутбука, а также телефона
или планшета (Android, iOS). В этот раздел временно сохраняется то, что мы копируем. Информация, которая в нем
находится, пользователю не видна.
Объясню на примере ПК с системой Windows. Допустим, у меня на Рабочем столе есть папка, которую нужно переписать
на флешку. Значит, щелкаю по ней правой кнопкой мыши и выбираю пункт «Копировать». Вроде как ничего не изменилось,
всё осталось по-прежнему. Но эта папка сохранилась в невидимой памяти, и сейчас компьютер держит ее в «уме» — в
буфере обмена.
Теперь я открываю свою флешку и вставляю в нее скопированную папку: щелкаю правой кнопкой мыши по пустому месту и
выбираю «Вставить».
Папка с Рабочего стола добавляется на флешку.
Вот так это и работает. Мы копируем какую-то информацию и тем самым добавляем ее в буфер обмена, а потом вставляем
(вытаскиваем оттуда).
Как долго там хранится информация
Хранится она там до тех пор, пока не будет заменена новой. Или до выключения (перезагрузки) компьютера.
Объясню на примере. Допустим, я в интернете прочел интересную заметку. Она мне так сильно понравилась, что я
захотел ее сохранить у себя на компьютере. Дело это нехитрое: нужно выделить текст, скопировать, вставить в файл и
сохранить.
Кстати, об этом у меня на сайте есть отдельный урок.
Значит, я выделяю нужный мне кусочек текста и копирую его.
Как вы уже знаете, он сразу же попадает в буфер обмена и будет там находиться до тех пор, пока я его куда-то не
вставлю. Но, допустим, я отвлёкся на другую статью. И в ней нахожу что-то, что тоже хотел бы сохранить на свой
компьютер. Так вот если я выделю и скопирую эту новую часть, то тот текст, который был скопирован до этого,
сотрется. Он заменится новым фрагментом. И при вставке добавится только новый текст.
Кроме того, буфер обмена полностью очищается при выключении и повторном включении компьютера. То есть если я,
например, решу прогуляться и перед этим выключу компьютер, то всё, что копировалось, но не было вставлено —
удалится. А, значит, включить, войти и извлечь информацию не удастся.
Буфер обмена — временное и очень ненадежное хранилище. Если уж вы скопировали какую-то
информацию, то не забудьте ее сразу же вставить.
Не зря под понятием «копирование» подразумевают и вставку тоже. То есть имеют в виду не одно, а сразу два
действия. Ведь при копировании данные попадают в промежуточное место, откуда должны быть непременно вставлены.
Иначе они не сохраняются, а удаляются.
Где находится буфер обмена
Где искать буфер обмена? У него есть вполне реальное место в компьютере: Локальный диск C — Windows — system32 —
файл clip.exe
Но в Windows 7, 8 и 10 этот файл не открывается. То есть вызвать его и посмотреть, что там находится, невозможно.
А вот в Windows XP он называется clipbrd.exe и найти его таки можно. И если предварительно скопировать какой-нибудь
текст, то он будет внутри этого файла.
Это системный файл. Его нельзя удалить, переместить или переименовать.
Как очистить
Если вы копируете текстовые фрагменты или небольшие файлы, тогда особого смысла в его очистке нет. Однако при
копировании больших объектов (например, фильмов) Виндовс может начать притормаживать. Ведь вся информация должна
попасть во временное хранилище, которое находится на системном Локальном диске. И даже после вставки она
по-прежнему будет «сидеть» в буферной памяти.
Но это легко поправить: просто скопируйте какой-нибудь небольшой файл, например, фотографию или документ Ворда.
Или сделайте скриншот (снимок экрана) — для этого
нажмите кнопку Print Screen на клавиатуре. Тогда все, что до этого было в буфере, сотрется и туда добавятся новые
данные.
Программы для работы с буфером обмена
Ежедневно общаться с буфером обмена через «копировать — вставить» не каждому удобно. Подчас необходима история
действий, повторное использование данных, их восстановление или вставка текста без форматирования. Есть немало
средств для облегчения работы, о них сейчас и скажу.
Clipdiary
Clipdiary — легкий, быстрый и бесплатный менеджер буфера
обмена. Благодаря этой программе вам не придется многократно копировать одну и ту же информацию и файлы. По нажатию
на горячую клавишу появляется окно программы со всеми данными, которые вы когда-либо копировали.
Clipdiary я пользуюсь уже много лет, и это — одна из незаменимых утилит для меня. Даже сейчас, чтобы написать
этот пост, я каждые полминуты использую Clipdiary. А уже через пару дней после первого знакомства с программой у
меня появилась лицензия на нее.
Copy Contents
Copy Contents — маленькая утилита, после
установки которой вы сможете скопировать содержимое файлов через контекстное меню.
Утилита поддерживает текстовые файлы в формате txt и файлы изображений в форматах jpg, pcx, png, bmp, tga, gif,
tif.
Greenshot
Скриншот можно сделать нажатием Prt Scr, а можно нажатием Prt Scr с программой Greenshot. Мне эта утилита очень нравится тем, что она
позволяет задать действия, которые будут выполнены после снятия скриншота.
Я настроил сохранение скриншота на диск, открытие в приложении Paint.net и копирование в буфер обмена. Таким
образом, я получаю копию скриншота на диске, могу быстро отредактировать его. Если редактуры не требуется, я сразу
же его вставляю в пункт назначения.
PhraseExpress
PhraseExpress — мощнейшая утилита для
автонабора текста и выполнения различных макросов. Она позволяет в разы сократить время написания текстов.
Сама по себе утилита может послужить аналогом Clipdiary, так как у нее есть точно такая же функциональность
слежения за буфером обмена. Кроме этого, вы можете создать множество макросов с использованием буфера. Например, я
могу вставить путь к файлу в зависимости от заголовка окна.
Pushbullet
Pushbullet — кроссплатформенная утилита для
синхронизации Push-уведомлений между всеми устройствами. Одна из её фишек — синхронизация буфера обмена. Все, что
вы скопировали на одном устройстве, тут же становится доступно на всех остальных.
Punto Switcher
Punto Switcher славится тем, что она позволяет
менять раскладку клавиатуры «на лету». Однако, многие её пользователи хорошо знакомы с функцией дневника, в который
можно сохранять все тексты, введенные с клавиатуры, а так же весь буфер обмена. Или вы можете быстро изменить
раскладку текста в буфере.
TeraCopy
TeraCopy — менеджер копирования файлов.
Программа копирует быстрее стандартного менеджера Windows, плюс в ней встроена проверка на целостность файлов после
копирования. Еще у вас появляется возможность практически в один клик копировать файлы в часто используемые папки.
Для этого просто добавьте их в избранные.
Tynt
Tynt — инструмент веб-аналитики для
издателей и SEO. Сервис позволяет отслеживать скопированный контент вашего сайта и ключевые слова. Как это
относится к буферу обмена? Очень просто. Посетители постоянно делятся контентом сайта. Если им понравилась какая-то
статья или картинка, они обязательно захотят этим поделиться.
Для того, чтобы посетителям было удобнее, веб-разработчики встраивают кнопки «Поделиться» к себе на сайт. При
этом никто не задумывается, что люди иногда делятся какой-то частью контента: цитатой или картинкой. Они выделяют
текст, копируют его и отсылают своим друзьям в ЛС во «ВКонтакте» или ещё куда-то. Tynt служит для отслеживания
именно такого контента.
Какими клавишами можно скопировать текст
Копирование и вставку можно делать не только через правую кнопку мыши. Для этого служит и сочетание клавиш
клавиатуры Ctrl + С и Ctrl + V.
Принцип следующий: выделяем то, что нужно скопировать, зажимаем клавишу Ctrl и затем нажимаем на клавишу С.
Переходим туда, куда эту информацию нужно поместить, зажимаем Ctrl и V (русскую М).