Составители:
ГЛАВА 8. ТЕХНОЛОГИИ ОБМЕНА ИНФОРМАЦИЕЙ В ОС WINDOWS
§ 8.1. Обмен информацией посредством буфера обмена Windows
8.1.1. Структура и основные форматы буфера обмена
Буфер обмена Windows состоит из двух разных частей: утилиты просмотра
Clipbrd.EXE и непосредственно буфера. Сам буфер реализован с помощью системного
модуля User и обеспечивает набор функций для временного хранения информации в та-
кой форме, которая позволяет осуществлять обмен данными между различными прило-
жениями. Конечно, приложение-источник тоже может прочитать собственную инфор-
мацию, записанную в буфер обмена, но дело в том, что эта информация является
глобальной и доступна для любых программ [6, 12].
Буфер обмена предоставляет набор возможностей для временного (не дискового)
хранения информации. Данные, записанные в буфер обмена, могут передаваться между
различными приложениями или возвращаться в исходное приложение, из которого они
попали в буфер.
Приложение-источник может копировать данные в буфер обмена в одном из пре-
допределенных или пользовательских форматов (будут рассмотрены ниже). Буфер само-
стоятельно управляет выделением памяти и размещением переданных ему данных.
После того как данные попадут в буфер обмена, любое приложение сможет полу-
чить к ним доступ, определить тип данных и, при желании, скопировать их.
Когда программа просмотра Clipbrd.EXE является активной, она регулярно запра-
шивает буфер обмена о том, содержатся ли в нем данные и каков их тип. Затем, если это
возможно, программа копирует данные из буфера и отображает их в своем окне.
Хотя буфер обмена выполняет свои "обязанности" очень хорошо, ему свойственны
и некоторые недостатки:
• имеется только один буфер;
• все данные, записанные в буфер, являются общедоступными;
• записанные в буфер данные могут быть разрушены.
Так как буфер обмена только один, все приложения должны использовать его со-
вместно. Но совместное использование неизбежно связано с возможностью конфликтов.
Предположим, что приложение А записало в буфер обмена растровое изображение, а
затем приложение Б записало в него блок текстовых данных. Поскольку приложение Б
вполне закономерно начинает с того, что очищает буфер обмена, картинка, записанная
приложением А, удаляется. Если приложение В, для которого была предназначена эта
картинка, уже успело ее прочитать, то все в порядке. Если же приложение В не скопиро-
вало изображение до того, как приложение Б записало в буфер обмена текст, картинка
пропадает.
Общедоступность буфера обмена также может стать причиной возможных ошибок.
Поскольку элемент данных, записанный в буфер, не может быть адресован какому-либо
конкретному приложению, доступ к этой информации может быть ошибочно получен
другим приложением, которое работает с данными того же типа [12].
Буфер обмена может содержать данные нескольких типов, записанных одним или
несколькими приложениями. В этом случае проблема заключается в том, как различить
эти блоки - например, несколько блоков текста, записанных из разных источников. По
этой причине приложение обычно очищает буфер обмена, перед тем как записывать в
него новый материал.
Эти факторы необходимо учитывать, но они не представляют собой серьезной
проблемы. Если перечисленные недостатки накладывают дополнительные ограничения
на работу программы, можно воспользоваться технологиями каналов (pipe), сокетов
165
ГЛАВА 8. ТЕХНОЛОГИИ ОБМЕНА ИНФОРМАЦИЕЙ В ОС WINDOWS § 8.1. Обмен информацией посредством буфера обмена Windows 8.1.1. Структура и основные форматы буфера обмена Буфер обмена Windows состоит из двух разных частей: утилиты просмотра Clipbrd.EXE и непосредственно буфера. Сам буфер реализован с помощью системного модуля User и обеспечивает набор функций для временного хранения информации в та- кой форме, которая позволяет осуществлять обмен данными между различными прило- жениями. Конечно, приложение-источник тоже может прочитать собственную инфор- мацию, записанную в буфер обмена, но дело в том, что эта информация является глобальной и доступна для любых программ [6, 12]. Буфер обмена предоставляет набор возможностей для временного (не дискового) хранения информации. Данные, записанные в буфер обмена, могут передаваться между различными приложениями или возвращаться в исходное приложение, из которого они попали в буфер. Приложение-источник может копировать данные в буфер обмена в одном из пре- допределенных или пользовательских форматов (будут рассмотрены ниже). Буфер само- стоятельно управляет выделением памяти и размещением переданных ему данных. После того как данные попадут в буфер обмена, любое приложение сможет полу- чить к ним доступ, определить тип данных и, при желании, скопировать их. Когда программа просмотра Clipbrd.EXE является активной, она регулярно запра- шивает буфер обмена о том, содержатся ли в нем данные и каков их тип. Затем, если это возможно, программа копирует данные из буфера и отображает их в своем окне. Хотя буфер обмена выполняет свои "обязанности" очень хорошо, ему свойственны и некоторые недостатки: • имеется только один буфер; • все данные, записанные в буфер, являются общедоступными; • записанные в буфер данные могут быть разрушены. Так как буфер обмена только один, все приложения должны использовать его со- вместно. Но совместное использование неизбежно связано с возможностью конфликтов. Предположим, что приложение А записало в буфер обмена растровое изображение, а затем приложение Б записало в него блок текстовых данных. Поскольку приложение Б вполне закономерно начинает с того, что очищает буфер обмена, картинка, записанная приложением А, удаляется. Если приложение В, для которого была предназначена эта картинка, уже успело ее прочитать, то все в порядке. Если же приложение В не скопиро- вало изображение до того, как приложение Б записало в буфер обмена текст, картинка пропадает. Общедоступность буфера обмена также может стать причиной возможных ошибок. Поскольку элемент данных, записанный в буфер, не может быть адресован какому-либо конкретному приложению, доступ к этой информации может быть ошибочно получен другим приложением, которое работает с данными того же типа [12]. Буфер обмена может содержать данные нескольких типов, записанных одним или несколькими приложениями. В этом случае проблема заключается в том, как различить эти блоки - например, несколько блоков текста, записанных из разных источников. По этой причине приложение обычно очищает буфер обмена, перед тем как записывать в него новый материал. Эти факторы необходимо учитывать, но они не представляют собой серьезной проблемы. Если перечисленные недостатки накладывают дополнительные ограничения на работу программы, можно воспользоваться технологиями каналов (pipe), сокетов 165
Страницы
- « первая
- ‹ предыдущая
- …
- 161
- 162
- 163
- 164
- 165
- …
- следующая ›
- последняя »