К помещению копии объекта в буфер обмена windows приводит выполнение команд

Обновлено: 04.07.2024

В Блокноте можно выделять, а затем копировать, перемещать или удалять фрагменты текста. Для работы с фрагментами используют буфер обмена – специальную область памяти, куда можно помещать выделенные объекты. Описанные действия с фрагментами текста вам пригодятся в любой программе или диалоговом окне, где используется ввод текста.

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

Для отмены выделения достаточно щелкнуть кнопкой мыши в любом месте документа.

Для работы с буфером обмена используют три основные команды.

? Копировать – выделенный фрагмент или объект будет помещен в буфер. При этом предыдущее содержимое буфера будет удалено.

? Вырезать – выделенный фрагмент или объект будет перемещен в буфер и удален из текущего места. Предыдущее содержимое буфера также будет удалено.

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

Данный текст является ознакомительным фрагментом.

Продолжение на ЛитРес

Буфер обмена

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

4.2.1. Команды для работы с файлами

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

4.2.2. Команды для работы с каталогами

4.2.2. Команды для работы с каталогами Просмотр содержимого каталогаДля просмотра содержимого каталога используется команда ls. Закоренелые пользователи DOS могут использовать привычную им команду dir, но команда Is намного удобнее. Программа ls имеет около сорока параметров,

19.2. Команды для работы с файлами

Буфер обмена

Буфер обмена Смотрим, что у нас есть в группе Буфер обмена (рис. 1.13). Рис. 1.13. Группа Буфер обмена Кнопка с ножницами отвечает за вырезание текста (ее дублирует сочетание клавиш Ctrl+X). Выделяем часть текста (например, первый абзац). Нажимаем кнопку с ножницами или Ctrl+X –

1.4 Сеанс работы и команды

1.4 Сеанс работы и команды Интерфейс оператора ОС представляет собой интерпретирующий язык, конструкции которого могут выполняться непосредственно при их вводе оператором (интерактивный режим) или из файлов (режим выполнения сценариев).Как и любой язык, язык оболочки

Настройки работы с буфером обмена

Настройки работы с буфером обмена Раздел Clipboard Handling (Операции с буфером обмена) (рис. 7.17) позволяет установить настройки работы с буфером обмена Windows; в зависимости от этих настроек программа Adobe InDesign будет лучше взаимодействовать с другими программами Adobe (при упоре на

3.4. Буфер обмена

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

Буфер обмена

Буфер обмена ChangeClipboardChain Функция ChangeClipboardChain удаляет указанное окно из цепочки просмотра буфера обмена. BOOL ChangeClipboardChain ( HWND hWndRemove , HWND hWndNewNext ); Параметры hWndRemove - дескриптор окна, которое будет удалено из цепочки. Дескриптор должен был быть передан в функцию SetClipboardViewer. hWndNewNext

Буфер обмена

Буфер обмена Просмотр буфера обмена Пример на основе простого модуля-класса, осуществляющего просмотр буфера обмена.unit ClipboardViewer;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(tform) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject);private FNextViewerHandle : THandle; procedure

Копирование в буфер обмена

Копирование в буфер обмена Две вспомогательных процедуры:procedure CopyButtonClick(Sender: TObject);begin If ActiveControl is TMemo then TMemo(ActiveControl).CopyToClipboard; If ActiveControl is TDBMemo then TDBMemo(ActiveControl).CopyToClipboard; If ActiveControl is TEdit then TEdit(ActiveControl).CopyToClipboard; If ActiveControl is TDBedit then TDBedit(ActiveControl).CopyToClipboard;end;procedure PasteButtonClick(Sender:

Буфер обмена и удаление

Буфер обмена и удаление Редактор титров поддерживает также операции с объектами с помощью буфера обмена Windows: копирование, вырезание и вставку. Данные операции применяются к объектам титров аналогично, как и к другим объектам, например к тексту в текстовом редакторе,

6.5. Общие команды меню Windows-программ. Буфер обмена Windows

6.5. Общие команды меню Windows-программ. Буфер обмена Windows Практически все Windows-программы имеют главное меню, которое расположено сразу под заголовком окна. В большинстве случаев некоторые команды главного меню совпадают. Например, многие Windows-программы имеют меню Файл,

§ 3.5 Перенос через буфер обмена

§ 3.5 Перенос через буфер обмена Простой, но незаслуженно игнорируемый способ. Он, как нетрудно понять, заключается в выделении фрагмента текста, или же текста целиком, копировании его в буфер обмена Windows, и последующей вставке в FB Editor.Копирование через буфер обмена, как

Использование буфера обмена для работы с объектами

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

Содержание материала

Единицей измерения информации является:

Какая система счисления используется при представлении числа в памяти компьютера:

Какие из перечисленных ниже устройств являются устройствами ввода

Какие из перечисленных ниже устройств являются устройствами вывода

Какие из перечисленных ниже устройств являются устройствами хранения информации

Обработку данных производит:

При стандартных установках Windows одинарным щелчком левой кнопкой мыши можно:


b) установить текущее положение указателя ввода информации


c) выделить слово в текстовом документа
d) отказаться от выбранной команды

При стандартных установках Windows двойным щелчком левой кнопкой мыши можно:


d) установить текущее положение указателя ввода информации

При стандартных установках Windows одинарным щелчком правой кнопкой мыши можно:


b) открыть объект
c) выделить слово в текстовом документе
d) установить текущее положение указателя ввода информации

Содержимое контекстного меню зависит от

a) состояния здоровья пользователя
b) места расположения указателя мыши в момент щелчка правой кнопки


c) числа открытых на рабочем столе окон
d) размера выделенной области

Какое из устройств наиболее отрицательно влияет на здоровье человека

a) устройство чтения компакт-диска
b) аудио-колонки
c) дисплей

Понятие «Операционная система» означает:

a) комплекс программ, обеспечивающих работу компьютера


b) программа подготовки больных к сложным операциям
c) программа, обеспечивающая интерфейс: пользователь-компьютер


d) программа, обеспечивающая возможность разработки сложных документов

С точки зрения Пользователя компьютера файл (file) это –


b) Ящик для хранения инструкций по использованию инструкций
c) Носитель информации
d) Место хранения для нескольких документов

Понятие «Папка» означает:


b) несколько файлов, хранящихся в одном месте
c) Ящик для хранения инструкций
d) Документ, хранящийся на компакт-диске

Папки могут содержать

Имя файла в файловой системе Windows может


c) содержать символы: точка, двоеточие, косая черта, звездочка, знак вопроса
d) начинаться с цифры

Расширение имени файла


b) содержит сведения о числе обращений к файлу
c) указывается после имени и отделено от него символом "точка"

при передаче документа на другой компьютер можно использовать:

Для просмотра содержимого файловой системы используется:

Буфер обмена это

a) область памяти компьютера, предназначенная для временного хранения информации о текущих настройках операционной системы.
b) область памяти компьютера, предназначенная для временного хранения информации от конкретного приложения для ее дальнейшего использования (вставки) в этом и только в этом приложении.
c) область памяти компьютера, предназначенная для временного хранения информации для использования в различных приложениях.


d) область в памяти компьютера, куда помещаются копии объектов для временного хранения


e) Область памяти выделяемая специально для хранения конфиденциальной информации

В буфер обмена можно поместить


b) папку со всеми включенными в нее объектами: файлами и папками

К помещению объекта в буфер обмена приводит операция:

Для перевода дополнительного блока клавиатуры в цифровой режим нужно нажать клавишу или сочетание клавиш:


b) CapsLock
c) этой частью клавиатуры лучше вообще не баловаться
d) Shift + CapsLock
e) Shift + NumLock
f) Tab

При отключении цифрового режима (NumLock)

a) компьютер не реагирует на нажатие клавиш дополнительной клавиатуры
b) дополнительная цифровая клавиатура работает как клавиши управления движением курсора


c) нажатие на любую клавишу дополнительной цифровой клавиатуры блокирует работу компьютера
d) дополнительная цифровая клавиатура работает как функциональная клавиатура
e) отключение режима NumLock не влияет на работу дополнительной цифровой клавиатуры

Для ввода заглавных букв нужно:

a) нажать на клавишу с изображением нужной буквы при прижатой клавише Shift


b) Включить режим CapsLock и набрать нужные символы


c) сделать это невозможно
d) набрать нужную букву дважды
e) нажать на клавишу с изображением нужной буквы при прижатой клавише Ctrl

Рабочий стол это:

a) место, куда установлен дисплей
b) подставка под клавиатуру
c) Изображение на экране дисплея с размещенными на нем элементами управления

Окно это:

a) объект на Рабочем столе, ограниченный прямоугольной рамкой


b) экран монитора
c) группа объектов на экране монитора, ограниченных прямоугольными рамками.
d) Серая полоса у края экрана монитора с размещенной на ней кнопкой ПУСК.

Увеличить размер окна до размера Рабочего стола можно


b) отбуксировать мышью одну из границ окна до размеров экрана
c) нажать на кнопку «Свернуть»
d) Нажать на кнопку «Закрыть»
e) дважды щелкнув мышью по строке заголовка (системной строке) окна

Панель задач

a) прижатая к какому-либо краю экрана (рабочего стола) полоса с отображенными на ней индикаторами, кнопками управления и значками активных приложений.


b) хаотично расположенные значки на экране
c) значок в левом верхнем углу окна приложения
d) Верхняя строка окна приложения, содержащая, в частности, имя программы-приложения.

Если свернуть окно, то

e) прекратится выполнение программы-приложения
f) окна приложения освободят рабочий стол, но соответствующее им приложение будет активно, и значок его останется на панели задач


g) окна приложения освободят рабочий стол, но соответствующее им приложение будет временно приостановлено, хотя значок его останется на панели задач
h) соответствующее ему приложение будет временно приостановлено, хотя окна приложения не освободит рабочий стол

восстановить окно значит

a) вернуть размер и положение на рабочем столе, которое было до "развертывания" или "свертывания"


b) продолжить работу остановленного приложения
c) продолжить работу программы после аварийного завершения
d) восстановить окно приложения после его завершения

Переместить окно на рабочем столе можно

a) захватив мышью его строку заголовка и отбуксировав в нужное место


b) последовательно изменяя его горизонтальные и вертикальные размеры


c) свернуть и развернуть окно несколько раз. Когда-нибудь оно займет нужную позицию на рабочем столе
d) Это сделать нельзя. Окна - неперемещаемые объекты.

Строка заголовка

a) содержит информацию об окне приложения и кнопки управления окном


b) строка специальных символов для служебных целей
c) Содержит только имя обрабатываемого приложением объекта
d) Показывает статистические данные об обрабатываемом в окне документе
e) Содержит инструменты «прокрутки» документа в окне.

Меню окна приложения

a) Состоит из доступных в приложении команд
b) Состоит из пунктов, содержащих команды приложения


c) Состоит из кнопок управления приложением
d) Показывает статистические данные об обрабатываемом в окне документе
e) Содержит инструменты «прокрутки» документа в окне.

Для работы с простыми текстовыми документами используется приложение


b) Адресная книга
c) Paint
d) Калькулятор
e) Проводник

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

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

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

контестное_меню

Пример окна контекстного меню

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

Буфер обмена – это промежуточное хранилище данных, предоставляемое операционной системой при копировании информации или обмена ей между приложениями. То есть это такой своеобразный «карман» Windows, в который пользователь, сначала может поместить определенную информацию (скопировать), а потом в любой момент ее оттуда достать (вставить). Данные содержащиеся в буфере обмена можно вставлять неограниченное количество раз. При копировании новой информации в буфер обмена, его старое содержимое удаляется.

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

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

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

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

Удалить – операция, удаляющая объект без помещения его в буфер обмена.

Переименовать – действие, позволяющее изменить имя файла или папки.

Открыть – команда, аналогичная двойному щелчку левой кнопки мыши и позволяющая запускать приложения, открывать файлы (документы, изображения и прочие) или папки.

Создать – действие, позволяющее в выбранном месте создать новый объект, например документ или папку. Этот пункт меню появится только том случае, если курсор мыши буте находится на свободном поле рабочего стола или открытого окна папки, то есть не на значке.

Создать ярлык – команда, позволяющая создать ярлык выбранного объекта.

Свойства – пункт меню, позволяющий узнать об объекте немало полезной информации, будь то программа, документ или одна из панелей Windows. Например, Свойства файла покажут, его тип, размер, месторасположение на компьютере, дату создания, название программы, с помощью которой его можно открыть и многое другое. Еще одной важной функцией, которой обладает эта команда, является возможность изменять собственные свойства выбранного объекта. Например, вызовите контекстное меню, щелкнув на значке Компьютер (Мой компьютер), расположенного на рабочем столе и выберите пункт Свойства. Перед вами откроется окно, открывающее доступ к различным параметрам и настройкам системы. Таким образом, вы сможете самостоятельно изменять свойства Windows.

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

Недавно у меня появилась возможность выполнить отладку буфера обмена в 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.

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


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


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


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


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


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

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

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

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

Мы рассмотрели, как зарегистрировать просмотр/прослушивание буфера обмена. Теперь посмотрим, как с помощью отладчика определить, какие программы участвуют в этих процессах. Сначала нужно идентифицировать процесс в сессии, где мы хотим проверить мониторинг буфера обмена. Это может быть любой процесс win32 в этой сессии — он нужен нам просто для того, чтобы найти указатель на Window Station. В этом случае я бы использовал окно «Блокнота», как и раньше:


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


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


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

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


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


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


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


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


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


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


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

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

Читайте также: