-
Объясните назначение буфера обмена.
Буфер обмена — специальная область
памяти, которая предназначена для
временного хранения переносимого,
копируемого или удаляемого объекта,
Буфер обмена обслуживается операционной
системой и характеризуется следующими
свойствами:
в буфере обмена хранится объект,
помещенный в него одним из известных
пользователю способов;
в буфере обмена объект хранится до тех
пор, пока не будет помещен в него новый
объект;
буфер обмена доступен из любого
приложения;
содержимое буфера обмена можно просмотреть
или сохранить в файле с помощью приложения
Просмотр буфера обмена;
буфер обмена очищается при перезагрузке
операционной системы либо специальной
командой;
объект в буфере обмена хранится в
формате, определяемом приложением-источником,
но при его вставке в составной документ,
как правило, предоставляется возможность
преобразования в другой формат.
-
Чем обмен данными через буфер обмена отличается от обмена данными перетаскиванием мышью?
ОБМЕН ДАННЫМИ
ПЕРЕТАСКИВАНИЕМ ОБЪЕКТА МЫШЬЮ
Во многих приложениях
обмен данными может быть выполнен путем
перетаскивания с помощью мыши. Так
можно реализовать и операцию копирования,
и операцию перемещения. Операцию
перетаскивания мышью рекомендуется
использовать, когда источник на экране
монитора находится недалеко от приемника.
Дня этого окна приложений целесообразно
расположить рядом.
Обмен данными через буфер выполняется
в следующей последовательности (рис.
12.14):
-
выделяется
объект, подлежащий копированию или
перемещению; -
выделенный
объект переносится в буфер обмена с
помощью команды Копировать или
Вырезать (например, через контекстное
меню); -
указатель мыши
устанавливается в место вставки объекта; -
объект вставляется
в указанное место командой Вставить
или командой Специальная вставка
(через контекстное меню или меню Правка)
-
Каково назначение Проводника в Windows?
Проводник (WindowsExplorer) в среде Windows 98
— программа (приложение), с помощью
которой пользователь может отыскать
любой объект файловой системы (папку
или файл) и произвести с ним необходимые
действия.
С помощью Проводника можно запускать
приложения, открывать документы,
перемещать или копировать файлы и папки,
форматировать дискеты, просматривать
Web-страницы в Интернет и др. Интерфейс
Проводника сделан предельно понятным
для пользователя. Внешний вид окна
Проводника может изменяться, но его
функции при этом практически не меняются.
-
Расскажите о возможностях Панели управления для настройки среды Windows.
класс инструментов для системной
настройки. Эти инструменты используются
для настройки оборудования и установки
приложений. К ним можно отнести: установку
или удаление программ; подключение двух
или более мониторов; установку,
тестирование и конфигурирование
оборудования; изменение настройки
Интернет; установку паролей и др.;
класс инструментов для настройки
пользовательского интерфейса. Эти
инструменты позволяют изменять внешний
облик системы. К ним можно отнести;
установку даты и времени; изменение
оформления Рабочего стола (звук, фон,
заставку и др.); поддержку необходимого
языка; выбор видов указателя мыши и др.;
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Время прочтения
12 мин
Просмотры 44K
Недавно у меня появилась возможность выполнить отладку буфера обмена в 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 об этом.
Назначение буфера обмена и некоторые тонкости в применении при работе.
Буфер обмена (Б.О) – это часть оперативной памяти предоставленной программным обеспечением для временного сохранения файлов и папок.
Другими словами это такое место, куда сохраняется то, что вами копируется или вырезается для того чтобы потом куда-то вставить или перенести например текст, медиа файлы или какие-то папки.
Скопированная информация храниться в буфере обмена до тех пор, пока не будет скопирован новый объект, который заменит предыдущий или пока не произойдет завершение работы ПК.
Существуют определенные программы предоставляющие возможность хранить в буфере обмена несколько объектов с правом выбора нужного при вставке.
А вот находящуюся информацию в буфере обмена можно вставлять сколько угодно раз, ограничений в этом нет!
В Microsoft Office уже предустановлен расширенный буфер обмена позволяющий хранить до 24 объектов! Как это работает, рассмотрим на примере Microsoft Word.
На главной странице редактора в левом углу панели быстрого доступа нажимаем на квадратик со стрелкой, откроется окно буфера, где будет видно, сколько элементов в данный момент скопировано из двадцати четырех возможных.
Далее идут две вкладки «Вставить все» и «Очистить все» первая позволяет вставить сразу все объекты вторая все удалить.
Вкладка «Параметры» производит пользовательские настройки состоящая из пяти пунктов, которые на мой взгляд, не очень то нужны за исключением если только последнего пункта и то не обязательно.
В общем здесь на ваше усмотрение потому как все просто и интуитивно понятно о предназначении каждого пункта.
Если нужно что-то отдельное вставить или удалить наводим курсор на нужный скопированный объект и кликаем по нему правой кнопкой мыши (в выпадающем списке из двух пунктов выбираем нужное действие).
Следует учесть (Б.О) Microsoft Office работает только тогда когда запущена программа при ее закрытие данные не сохраняются!
Еще один важный момент при копировании файлов может возникнуть вот такое диалоговое окно, что не означает об ошибке или невозможности данного действия просто в программе Office такой формат не поддерживается, а файл на самом деле скопирован и его спокойно можно вставить куда вам нужно.
Горячие клавиши для работы с (Б.О)
Ctrl+A – выделить всё
Ctrl+C – копировать в буфер
Ctrl+X – вырезать
Ctrl+V – вставить
Ctrl+Insert – копировать
Shift+Insert – вставить
(О сочетании горячих клавиш для копирования и вставки объектов и других возможностей клавиатуры вы можете узнать в этой статье.)
Чистим буфер обмена
Сразу возникает вопрос для чего это нужно и зачем его чистить?
Для того чтобы не нарушать быстродействия системы компьютера!
Если скопировать фразу или отрывок текста это никак не повлияет на работу «ПК» но если файл весит несколько гигабайт, то нагрузка на операционную систему может быть весьма ощутима.
Поэтому всегда после тяжелого файла копируем любой маленький отрывок текста, или просто одно слово, зная о том, что предыдущий объект будет заменен последующим.
Вот, в общем, то и все что я хотел сказать по этой теме про буфер обмена на компьютере.
Валерий Семенов, moikomputer.ru
Главная
Что такое буфер обмена?
Практически все компьютерные чайники, сталкиваясь с понятием «буфер обмена» с трудом понимают, что это такое и какая от него польза. Услышанные от более продвинутых пользователей такие термины, как: «скопировать в буфер обмена», «вставить из буфера обмена», «вырезать в буфер обмена» зачастую приводят изучающего компьютер с нуля в состояние легкого ступора. В этой статье будет дано разъяснение, что такое буфер обмена, как с ним работать и где он находится.
Что такое буфер обмена простым языком
Буфер обмена – это место в оперативной памяти компьютера, предназначенное для промежуточного хранения любого вида информации (текст или часть текста, фото и видеофайлы, аудиофайлы и прочие типы файлов). Буфер предназначен для обмена (поэтому он так и называется) данными между программами. Т.е. скопировав в буфер данные из одной программы, пользователь может вставить их копию в другую программу.
Для лучшего понимания буфер обмена можно сравнить с передачей музыки с одного компьютера на другой с помощью флешки. Например, вы скопировали музыкальные треки со своего компьютера на флешку, вынули ее и понесли своему другу, где скопировали уже на его компьютер. В этом примере флешка является буфером обмена, а компьютеры – программами, между которыми происходит обмен. Только в отличие от флешки информация в буфере обмена компьютера хранится до тех пор, пока ее не заместят другие данные или до выключения или перезагрузки компьютера.
Где находится буфер обмена
Буфер обмена находится в части оперативной памяти компьютера, под которую выделяется место операционной системой или определенной программой. Большинство приложений, предназначенных для обработки файлов, используют собственный буфер обмена, который обладает расширенным функционалом по сравнению с буферов операционной системы. Например, популярный тестовый редактор Word из офисного пакета Microsoft Office позволяет хранить до 20 различных копий текста или его частей. В то время как штатный буфер, предоставляемый операционной системой Windows способен хранить только одну копию. Кроме того, существует большое количество программ, расширяющих возможности штатного хранилища для обмена.
Как работать с буфером обмена
Работа с буфером обмена производится с помощью контекстного меню или комбинаций клавиш (так называемые горячие клавиши). Как правило, указания на горячие клавиши всегда находятся в строке меню (выбранную для проведения операции) справа. Рассмотрим на примере переноса уже набранного текста в стандартном блокноте Windows для его последующей обработки в текстовый редактор WordPad.
- Выделим часть нужного текста или весь текст. Для полного выделения выберите в строке меню блокнота Правка>Выделить все или нажмите комбинацию клавиш . Для частичного выделения подведите курсор мыши к началу нужного фрагмента текста, зажмите левую кнопку мыши и выделите необходимый фрагмент.
- Щелкните правой кнопкой мыши в окне блокнота для вызова контекстного меню и выберите в нем пункт Копировать или просто нажмите комбинацию клавиш На этом этапе выделенный текст будет скопирован в буфер обмена, но визуально эта операция никак не будет обозначена.
- Откройте текстовый редактор WordPad с помощью Главного Меню Пуск>Все программы>Стандартные>WordPad
- Щелкните правой кнопкой мыши в окне редактора WordPad и выберите пункт меню Вставить или нажмите комбинацию клавиш . В результате этой операции будет произведена вставка хранящегося в буфере обмена текста, с которым вы можете производить дальнейшие манипуляции.
Кроме распространенных команд Копировать и Вставить в операциях с буфером обмена используется команда Вырезать, которая предназначена для помещения в буфер информации с ее удалением из источника. Например, если в вышеприведенном примере использовать вместо Копировать, команду Вырезать, то выделенный текст в Блокноте будет не скопирован, а перемещен в буфер с удалением выделенной части из блокнота (вырезан).
Наверное, вы когда-нибудь в интернете сталкивались или столкнетесь с такими терминами, как: «копипаста», «копипастер». Копипастой называют информацию, которая один в один скопирована с одного сайта на другой, а копипастер – это человек, который копирует информацию. Произошли они как раз от команд работы с буфером обмена Copy и Paste, что в переводе с английского и означает Копировать и Вставить.
Источник
Что такое буфер обмена?
Назначение буфера обмена и некоторые тонкости в применении при работе.
Буфер обмена (Б.О) – это часть оперативной памяти предоставленной программным обеспечением для временного сохранения файлов и папок.
Другими словами это такое место, куда сохраняется то, что вами копируется или вырезается для того чтобы потом куда-то вставить или перенести например текст, медиа файлы или какие-то папки.
Скопированная информация храниться в буфере обмена до тех пор, пока не будет скопирован новый объект, который заменит предыдущий или пока не произойдет завершение работы ПК.
Существуют определенные программы предоставляющие возможность хранить в буфере обмена несколько объектов с правом выбора нужного при вставке.
А вот находящуюся информацию в буфере обмена можно вставлять сколько угодно раз, ограничений в этом нет!
В Microsoft Office уже предустановлен расширенный буфер обмена позволяющий хранить до 24 объектов! Как это работает, рассмотрим на примере Microsoft Word.
На главной странице редактора в левом углу панели быстрого доступа нажимаем на квадратик со стрелкой, откроется окно буфера, где будет видно, сколько элементов в данный момент скопировано из двадцати четырех возможных.
Далее идут две вкладки «Вставить все» и «Очистить все» первая позволяет вставить сразу все объекты вторая все удалить.
Вкладка «Параметры» производит пользовательские настройки состоящая из пяти пунктов, которые на мой взгляд, не очень то нужны за исключением если только последнего пункта и то не обязательно.
В общем здесь на ваше усмотрение потому как все просто и интуитивно понятно о предназначении каждого пункта.
Если нужно что-то отдельное вставить или удалить наводим курсор на нужный скопированный объект и кликаем по нему правой кнопкой мыши (в выпадающем списке из двух пунктов выбираем нужное действие).
Следует учесть (Б.О) Microsoft Office работает только тогда когда запущена программа при ее закрытие данные не сохраняются!
Еще один важный момент при копировании файлов может возникнуть вот такое диалоговое окно, что не означает об ошибке или невозможности данного действия просто в программе Office такой формат не поддерживается, а файл на самом деле скопирован и его спокойно можно вставить куда вам нужно.
Горячие клавиши для работы с (Б.О)
Ctrl+A – выделить всё
Ctrl+C – копировать в буфер
Ctrl+X – вырезать
Ctrl+V – вставить
Ctrl+Insert – копировать
Shift+Insert – вставить
(О сочетании горячих клавиш для копирования и вставки объектов и других возможностей клавиатуры вы можете узнать в этой статье.)
Чистим буфер обмена
Сразу возникает вопрос для чего это нужно и зачем его чистить?
Для того чтобы не нарушать быстродействия системы компьютера!
Если скопировать фразу или отрывок текста это никак не повлияет на работу «ПК» но если файл весит несколько гигабайт, то нагрузка на операционную систему может быть весьма ощутима.
Поэтому всегда после тяжелого файла копируем любой маленький отрывок текста, или просто одно слово, зная о том, что предыдущий объект будет заменен последующим.
Вот, в общем, то и все что я хотел сказать по этой теме про буфер обмена на компьютере.
Источник
Как и где посмотреть буфер обмена в Windows 7, 10
Когда пользователь на компьютере что-либо копирует (различные файлы или папки), то в это время скопированная информация идёт в буфер обмена (БО или Б) до востребования (до тех пор, пока не понадобится её куда-то вставить). Следует отметить, что при выключении компьютера информация с БО стирается. Скопировать информацию можно, нажав на правую кнопку мыши и в появившейся вкладке нажав левой клавишей на слово «Копировать».
Для начинающих пользователей ПК
БО упрощает редактирование текста и в целом работу с компьютером, но эта удивительная штука перекочевала и на современные телефоны, с её помощью можно сохранять необходимые куски текста (например, поздравления) и отсылать их нескольким контактам. Телефон хранит историю всех копированных в буфер сообщений, но при необходимости лишнее можно удалить.
Копировать в буфер обмена можно все, что душе угодно:
- папки;
- куски текста;
- видео и аудиофайлы;
- картинки и любые другие файлы.
Компьютер при этом выделит необходимое пространство в оперативной памяти необходимого объёма для хранения скопированной информации. Можно представить это место как некоторую невидимую область, где временно хранится информация, а потом удаляется.
Когда пользователь перешёл в необходимое место и хочет вставить информацию, то достаточно нажать правую кнопку мыши и выбрать «Вставить», можно увидеть, как копированная ранее информация успешно вставилась. Стоит отметить, что при этом она не удаляется из буфера и её можно повторно вставить, а удаляется она тогда, когда снова что-то скопируется. То есть если пользователь копировал какой-то текст, а потом ему понравилась какая-то картинка в интернете, и он её тоже скопировал, то при этом в БО останется только последний объект, то есть — картинка.
Для начинающего пользователя совсем неважно, где собственно хранится эта информация, гораздо важнее следить за тем, чтобы случайно не перезаписать в буфер новую информацию, когда все ещё нужна старая. Но не только команда «Копировать» отсылает информацию в БО, но также и команда «Вырезать».
Можно с лёгкостью таким образом копировать папки со всех их содержимым и вставлять в необходимое место (например, на USB-флешку).
Следует обратить внимание ещё вот на что: при копировании информации её можно вставить не куда угодно. Так, если пользователь копировал текст, то и вставить его можно в текстовое поле или в специальную программу, которая может работать с текстом, а не просто на рабочий стол или в папку. Соответственно, скопированную папку тоже не удастся вставить в текстовый документ.
Нужно быть предельно осторожными, имея дело с важной информацией. Кроме ошибки, когда пользователь случайно копировал что-то поверх, например, может неожиданно выключиться компьютер из-за скачков в напряжении или по другим причинам. Информация с буфера соответственно пропадёт. Поэтому желательно сразу вставлять в документ (если это текст, картинка) информацию и сохранять её.
Работа с буфером для продвинутых пользователей
Любознательные пользователи ПК наверняка хоть раз интересовались, где же эта «тайная комната», где буфер обмена на ноутбуке. Тут следует учитывать, что искать БО следует в разных местах в зависимости от версии системы Windows.
Windows XP. В этой операционной системе БО находится на системном диске (обычно С) по адресу: C:Documents and SettingsSystem32. Тут можно найдёте файл clipbrd. exe, запустив который откроется окно и вы сможете просмотреть содержимое БО.
Windows 7. Чтобы посмотреть, где находится буфер обмена на Windows 7, достаточно зайти туда же, но называется файл иначе (clip.exe) и запустить его, в отличие от ОС XP, не получится. Однако, наведя на этот файл курсор, можно убедиться, что именно он отвечает за БО.
При этом не нужно волноваться о том, как же почистить буфер обмена на Windows 7, если файл не запускается, — в большинстве случаев это и не нужно, ведь информация в буфере всегда перезаписывается, не захламляя компьютер, а при выключении и вовсе стирается.
Но если все же хочется очистить БО — нужно обратиться за помощью к стороннему ПО, установив дополнительное приложение, можно будет это сделать.
Windows 10. Для того чтобы посмотреть буфер обмена на Windows 10, нужно скачать файл «clipbrd.exe» или использовать дополнительные утилиты, так как в этой версии Windows возможность работы с БО непосредственно (как было в ранних версиях) была удалена, это было сделано для безопасности пользователей, дабы не возникало лишних ошибок, такая «защита от дурака».
Вообще, на новых версиях это всё неактуально, ведь единственное, зачем может понадобиться менеджер работы с буфером, — это его очистка.
Но очистить его можно и другими способами, которые гораздо проще:
- перезаписать, скопировав что-то другое;
- очистить при помощи командной строки;
- очистить средствами специальных программ;
- просто выключить компьютер.
Ошибки в работе и их решения
Ошибки очистки буфера обмена часто возникают в старой (2003 и 2007 года) версии Excel. Они могут возникать вследствие вмешательства в его работу. Такое вмешательство может быть из-за:
- вируса;
- программ, использующих БО;
- отсутствие системных переменных TMP и TEMP.
Соответственно, решить можно при помощи удаления вируса, ввода системных переменных, удалении или изменении работы приложений. Так, в Download Master, если стоит галочка «Отслеживать URL в буфере обмена», может возникать такая ошибка. Сняв галочку, возможно, проблема будет решена.
Специальные утилиты
Как уже известно, для облегчения работы с буфером существуют специальные приложения. Одним из таких приложений (бесплатных) является программа CLCL для Windows. Она хороша тем, что её не требуется устанавливать, распаковав её и запустив, можно работать. Там всего 4 файла, запустить нужно «CLCL.exe». Существуют и другие программы для работы с БО, например, Comfort Clipboard.
Такие программы дают возможность вызвать окно и работать с БО, это позволяет заносить туда больше информации, и она не теряется и не записывается поверх, вместо этого хранится все, что пользователь скопировал, а также предоставляется возможность выбирать, что нужно вставить.
Originally posted 2018-04-07 11:39:51.
Источник
Буфер обмена — это временное хранилище для переноса информации от одного приложения к другому. Старые данные при следующем копировании заменяются новыми. Чтобы правильно работать с буфером обмена, необходимо знать, где он находится и для чего нужен.
Содержание
- Расположение на компьютере
- Особенности работы
- Что такое буфер обмена и где он находится в компьютере, это просто
- Буфер обмена на телефоне, простыми словами для новичков
- Как долго хранится информация в буфере обмена
- Как очистить буфер обмена на компьютере и телефоне
- Программа для работы с буфером обмена
- Заключение
- Что такое буфер обмена
- Буфер обмена: как пользоваться
- Что такое буфер обмена и где он находится в компьютере?
- Что такое буфер обмена в телефоне и где он находится?
Расположение на компьютере
Буфер обмена необходим для переноса информационных данных к определенной части приложения путем использования функций копировать, вырезать и вставить. Чтобы получить к нему доступ, необходимо перейти по папкам следующим образом — Системный диск (C:) → Windows → system32 → файл clip с расширением exe. В операционной системе Windows, начиная с версии Windows 7, его нельзя открывать.
Сам файл промежуточного хранилища нельзя открыть, поэтому устанавливают специальную программу.
Благодаря ей пользователю будет доступен просмотр буфера. Легче всего открыть доступ с помощью программы Punto Switcher от Яндекса. Она является бесплатной и предназначена для некоммерческого использования. После установки программы необходимо перейти в Настройки → Общие → Дополнительные.
Затем надо отметить галочки возле соответствующих пунктов: показывать окно с результатами конвертации и показывать всплывающие подсказки. После нажатия кнопки ОК программа начнет отслеживание копируемых данных. Чтобы посмотреть информацию или историю, нужно перейти Буфер обмена → Посмотреть историю. Большинство программ для обработки файлов имеет свое хранилище данных, которое обладает более широким функционалом по сравнению с буфером операционной системы.
Чтобы расширить возможности штатного хранилища, можно воспользоваться специальными программами.
Особенности работы
Буфер обмена — это часть оперативной памяти компьютера, где копируемая информация хранится в течение некоторого времени. К временным данным относятся видео, текст или изображения, с которыми пользователь компьютера работает. При попадании информации в память с произвольной выборкой (RAM — Random Access Memory) пользователь может с ней работать в соответствии со своими нуждами.
Например, при наборе текстового сообщения можно его скопировать и вставить в другое место. При этом скопированная информация занесется в хранилище.
Оперативная память является энергозависимой, поэтому при выключении компьютера или любого другого устройства хранящиеся в буфере обмена данные стираются. После этого их невозможно восстановить. Для работы с хранилищем используются горячие клавиши или контекстное меню. Чтобы скопировать текстовую информацию, применяют сочетание клавиш Ctrl + A (для полного выделения текста), C (для копирования) и V (для вставки в новое место).
Назначение и рекомендации по выбору домашнего концентратора для дома
В результате последней операции производится вставка хранящихся данных для дальнейшего использования.
Если в оперативной памяти находится файл слишком большого размера, компьютер начинает тормозить. Чтобы этого избежать, нужно очистить хранилище путем копирования более легкого элемента. Можно скопировать небольшой текстовый фрагмент. Благодаря замене файла информацией меньшего объема компьютер начнет нормально функционировать.
Чтобы лучше понять, как работает буфер обмена, хранилище сравнивают с переносом музыкальных треков через флешку с одного компьютера на другой. В этом случае флешка является промежуточным хранилищем данных, а компьютеры — программами, между которыми происходит обмен.
Original author: Matt Burrough Недавно у меня появилась возможность выполнить отладку буфера обмена в 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
, затем нажать 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 об этом.16834.5k 168 Рубрика: Сервисы и программы
Оглавление:
Что такое буфер обмена и где он находится на компьютере, важный вопрос для новичков. Опыт обучения в Академии заработка показывает, что большинство новичков, не знает, что это такое. В статье мы разберем, что такое буфер обмена, где он находится, как долго в нём хранится информация, как его можно очистить и рассмотрим программы для работы с буфером обмена.
Что такое буфер обмена и где он находится в компьютере, это просто
Здравствуйте друзья! Если Вы недавно начали работать с компьютером, то наверняка у Вас возникал вопрос, что такое буфер обмена и где он находится в компьютере? На самом деле, всё не так сложно. Раскроем это понятие простым языком. Буфер обмена – это временное хранилище данных на компьютере.
Например, Вы скопировали папку, картинку, текст или какие-либо другие файлы. И после этого они переместились временно в буфер обмена, до вставки этих файлов в документ или папку.
В этой папке наёдете такой файл – «Clipbrd.exe». Нажимаете на него правой кнопкой мыши и кнопку «Открыть». Далее, Вы заметите всю информацию, в этом буфере обмена. В других версиях Виндовс, путь к этому файлу такой же. Но, он называется по-другому – «Clip». Выглядит он так (Рисунок 1).
Если Вы не хотите его долго искать, достаточно в поиске (вверху с правой стороны) набрать это слово и оно автоматически найдётся.
Буфер обмена на телефоне, простыми словами для новичков
Система телефона иногда начинает немного притормаживать во время работы, и это нормально. Ведь он не имеет такой большой мощности, как компьютеры. Буфер обмена у телефонов работает аналогичным образом. Так же, как и на компьютерах.
Простыми словами на телефоном устройстве буфер обмена– это оперативная память телефона. Например, выделим несколько сообщений на нашем Смартфоне. Далее, выбираем из меню кнопку «Копировать». После этого Вы увидите системное сообщение «Скопировано в буфер обмена».
Теперь, мы можем скопированные сообщения вставить в блокнот и сохранить. Таким образом используется буфера обмена в телефоне.
Как долго хранится информация в буфере обмена
Данные файлов в буфере обмена слишком долго не хранятся. Как уже было сказано ранее, это временная память. Например, Вы скопировали одно предложение из текста и вставили его в документ. Затем выбрали ещё раз другую информацию для вставки (Рисунок 2).
После каждого копирования различной информации, в буфере обмена всё изменяется. По нескольку файлов там никогда не хранится.
Даже если Вы скопировали целый фильм, который весит например, гигабайты, его можно в ту же секунду заменить простым копированием текста из браузера или документа. Итак, мы рассмотрели, что такое буфер обмена и где он находится на компьютере. Теперь, попробуем его очистить.
Как очистить буфер обмена на компьютере и телефоне
Вам, можно не заморачиваться с очисткой буфера обмена. Поскольку мы заменяем файлы постоянно, и надолго там информация не сохраняется. Но, варианты удаления файлов из буфера обмена существуют:
- Стандартная очистка. С помощью горячих клавишей копирования и вставки.
- Выключение или перезагрузка компьютера. В данном варианте буфер обмена очищается поскольку все данные, которые мы копировали из него исчезают.
Итак, перечисленные способы Вам помогут очищать буфер обмена без каких-либо трудностей.
Программа для работы с буфером обмена
Вы можете использовать специальные программные обеспечения, которые заточены, чтобы работать с буфером обмена на компьютере. Но, мы выберем ту, которая легка в использовании, и у неё удобный функционал. Как раз то, что нужно новичку. Название этой программы — «Punto Switcher». Практически на каждом компьютере, она должна быть установлена. Но, если у Вас её нет, можете скачать эту программу в Сети.
Данная утилита помогает пользователю переключать автоматически раскладку клавиатуры. Если Вы вдруг забыли переключить её, например, на русский язык.
Она автоматически загружает скопированные данные из буфера обмена. Для этого Вам нужно подключить её к буферу обмена, чтобы она собирала с него всю информацию. Запускаем программу, идём в настройки «Общие» далее «Дополнительные настройки» и нажимаем на раздел «Следить за буфером обмена» (Рисунок 3).
После этого жмём кнопку «ОК», чтобы сохранить все изменения. Затем, перезагружаем компьютер.
Чтобы посмотреть буфер обмена в этой программе, нажимаем на её значок в трее правой кнопкой мыши, и выбираем из меню функцию «Посмотреть историю» (Рисунок 4).
Вы увидите скопированные ранее ссылки, или кусочки предложений из текста. Список программ, которые помогут Вам работать с буфером обмена:
- утилита CLCL.
- программа для работы с буфером обмена Clipboard.
Используйте эти программы, и Вы не только откроете буфер обмена на компьютере, но и возьмёте оттуда нужные Вам файлы.
Заключение
Подведём основные итоги. Сегодня мы узнали, что такое буфер обмена и где он находится на компьютере. Буфер обмена, это своего рода история, которая сохраняется на компьютере за счёт наших действий. Копирование файлов, вырезание предложений из текста и так далее.
Эту возможность на компьютере Вы можете использовать недолго, пока включен компьютер или не заменён файл. Буфер обмена, позволяет не терять информацию, а наоборот сохранять её. Если Вы забыли то, что скопировали, это не проблема. В буфере обмена всё это сохранилось. Так же используйте программы, которые управляют буфером обмена. Удачной Вам работы за компьютером!
С уважением, Иван Кунпан.
Просмотров: 2957Получайте новые статьи блога прямо себе на почту. Заполните форму, нажмите кнопку «Подписаться»Ваше имя: *Ваш e-mail: *ЛУЧШЕЕ РЕШЕНИЕ ДЛЯ НАЧИНАЮЩИХ«Как начать зарабатывать в интернете без вложений»
Работая на компьютере или редактируя данные в телефоне на ОС «Андроид», вы часто сталкиваетесь с буфером обмена. Узнайте, что такое буфер обмена и как им пользоваться.
Фото: Байон
Что такое буфер обмена
Термин «буфер обмена» знаком пользователям ПК и владельцам «Андроидов». Копируя информацию для последующей ее вставки, при закрытии файла появляется сообщение, что буфер содержит большой объем данных, которые рекомендуется либо сохранить, либо нет. Что такое буфер обмена?
Исходя из приведенного выше описания, можно догадаться, что буфер обмена — это временное хранилище информации. Как им пользоваться? Выделите фрагмент текста, картинку или целый файл в Проводнике, скопируйте или вырежьте. Информация попадет в буфер обмена.
Скопировать можно двумя способами — нажать комбинацию клавиш Ctrl + C или выбрать функцию «Копировать» из контекстного меню, вызываемого правой кнопкой мыши. Чтобы вырезать, нажмите Ctrl + X или «Вырезать» в контекстном меню.
Фото: softcatalog.info
Содержащуюся в буфере информацию можно вставить. Это надо сделать до выключения компьютера, иначе буфер очистится. Чтобы вставить информацию из буфера в выбранное место, поставьте туда курсор, нажмите Ctrl + V или «Вставить» в контекстном меню. В буфере информация хранится до того момента, пока вы снова что-то не скопируете или не вырежете.
Где находится буфер обмена? На компьютере большинство приложений пользуются буфером, находящимся в операционной системе. Исключение составляет Microsoft Office — тут есть собственное хранилище. На «Андроиде» информация в буфере хранится в операционной памяти устройства.
Читайте также: Как пользоваться снапчатом: эффекты на Андроиде
Буфер обмена: как пользоваться
Зайти в буфер обмена без каких-либо программ можно лишь на компьютере, где установлена ОС Windows XP или 2000. Воспользуйтесь встроенной утилитой. Для этого в Пуске выберите «Выполнить» или нажмите комбинацию Win + R. После этого в командную строку введите clpbrd.exe.
В более поздних версиях Windows такой утилиты нет. Как открыть буфер обмена? Воспользуйтесь специальными программами, например ClipX или Clpdiary. С их помощью можно регулировать объем буфера, удалять лишние хранящиеся там сведения, использовать сохраненную информацию.
Фото: softcatalog.info
Чтобы зайти в буфер на телефоне:
- выделите фрагмент текста;
- немного дольше удерживайте над ним палец, появится соответствующее окно.
В буфере обмена телефона может храниться до 10 скопированных фрагментов, ими можно воспользоваться или удалить выборочно/все. Эта функция доступна не на всех телефонах, но точно есть на устройствах производства Samsung и LG.
Фото: Все про Андроид
В работе зачастую требуется временное хранилище информации, чтобы обеспечить ее перенос. С целью контролировать буфер памяти используйте специальные программы или утилиты. Успехов!
Читайте также: Как скачать видео с Ютуб на телефон Андроид
Доброго всем времени на fast-wolker.ru! Многие начинающие пользователи сталкиваются с различными еще неизвестными компьютерными понятиями, что вполне нормально, и пытаются в них разобраться. По сути это и есть компьютерная грамотность.
Многие элементы этих знаний важны, даже несмотря на свою простоту. Одним из таких моментов является понятие «буфера обмена». Что это такое, мы сейчас и рассмотрим.
Что такое буфер обмена и где он находится в компьютере?
Понятие «буфер обмена», в принципе, говорит само за себя. Это такое место в компьютере, куда временно помещаются и хранятся короткое время некоторое время некие данные. Во время работы как с текстовыми файлами, так и с изображениями, (не говоря о сети интернет, мы так или иначе копируем и сохраняем для себя какую-то информацию.
В старые добрые времена, когда не было ни компьютеров, ни принтеров, на которых можно распечатать, то что было сохранено, копировалось и сохранялось все в ручную. Т.е., брали ручку, листок бумаги и переписывали из книг все, что было необходимо, делали вырезки из газет и журналов и наклеивали их в тетради. Сейчас это уже не столь необходимо, хотя может быть, есть некоторые, кто до сих пор сохраняет для себя таким образом всю нужную информацию.
Итак, найдя в тексте нужную информацию или обнаружив нужную картинку, мы нажимаем правой клавишей мыши и в открывшемся меню выбираем надпись «копировать».
В результате эта информация или файл попадают в специальную область компьютера, где будут храниться до тех пор, пока мы не вставим ее в необходимое нам место. Надо заметить, что после выключения компьютера эта информация из буфера обмена автоматически стирается и при повторном включении ее в буфере обмена уже не будет. Поэтому, при выключении своего компьютера убедитесь, что все нужное у вас сохранено.
Область компьютера, в которой храниться временные данные называется «оперативной памятью»(ОЗУ, RAM). У каждой ячейки есть адрес, в который временно помещается информация из буфера обмена, а так же другая служебная информация. Под буфер обмена отводится некий диапазон ячеек ОЗУ.
И еще одно, информация в буфере обмена не накапливается, а заменяется предыдущая на последующую. Например, если вы скопировали сначала один текст, а потом другой, то последний скопированный текст заменит предыдущий и при вставке скопирует именно его.
Но при вставке информации, файла, картинки и прочее, они из буфера обмена не удаляются. Таким образом, вы можете вставлять неограниченное количество раз.
Есть и технические нюансы. Не всякую скопированную информацию можно вставить туда, куда хочется. Например, открыв папку в нее вы вставите только файл, а вот текст вы сможете вставить только в редактор или ворд, или какой-либо другой. Так же как и скопированный текст из интернета. Его можно вставить только в текстовой редактор и никуда более.
При работе с копированием и вставкой можно пользоваться не только клавишами мыши, но и самой клавиатурой. Для этого вам понадобятся следующие комбинации клавиш:
Где же хранится эта скопированная информация? В операционной системе старого образца Windows XP есть специальная программа под названием «Clipbrd.exe». Открыв ее можно узнать, что храниться в буфере обмена этой системы.
Найти программу можно по следующему пути: «C:/Documents and Settings/System 32». Что же касается более поздних версий, таких ка 7 и пр., то такой программы там уже нет, а имеется просто исполняющий файл. Расположен он в папке «C:/ windows/System 32», а там находим файл под именем clip.exe. Если навести на него курсором мыши то можно прочитать его свойства.
Поскольку стандартный буфер обмена сохраняет только одну информацию, заменяя ею предыдущую, а иногда возникает необходимость в сохранении и повторной вставке одной и той же информации, то были разработаны программы для таких целей. Одна из них (Для Windows 7) – утилита Comfort Clipboard.
Эта программа удобна тем, что в ней сохраняется вся скопированная информация, включая текст, папки, файлы и пр. Они уже не заменяют друг друга, а содержатся в ней все. В результате вы сможете выбирать и вставлять что вам нужно и куда нужно.
Что такое буфер обмена в телефоне и где он находится?
В телефоне так же имеется буфер обмена, который играет аналогичную роль, что и в компьютере. Все скопированные файлы хранятся в этом месте до тех пор, пока их не переместили.
Буфер обмена находится в оперативной памяти смартфона. Что бы скопировать и переместить любой файл, достаточно нажать на него и несколько секунд удерживать. Появится надпись «Копировать» или «Переместить». Выбираем нужное, затем вам предложат выбрать место для копирования или перемещения. Выбираете – в основной памяти телефона или же переносите на карту памяти. В результате произойдет процесс копирования.
Проверять буфер обмена и очищать его так же, как и память и ненужные файлы – необходимо. Поскольку телефон, в отличие от компьютера гораздо менее производителен. Что бы добраться до буфера обмена в телефоне надо воспользоваться специальными программами. Одна из них – Clipper. Это довольно простая в использовании утилита.
После установки программы и копировании каких-либо данный, открыв программу во вкладке буфер обмена их можно будет обнаружить.
Эти данные можно как вставлять куда необходимо, так и удалять в любой момент. Вот такие особенности буфера обмена как на компьютере, так и на телефоне. Успехов!
Используемые источники:
- https://inflife.ru/bufer-obmena/
- https://m.habr.com/post/339442/
- https://biz-iskun.ru/chto-takoe-bufer-obmena-i-gde-on-nahoditsya-v-kompyutere.html
- https://www.nur.kz/1718924-cto-takoe-bufer-obmena-i-kak-im-polzovatsa.html
- https://fast-wolker.ru/chto-takoe-bufer-obmena-i-zachem-on-nuzhen.html