Редактор буфера обмена

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



Введение

Создание и редактирование документов, копирование файлов и папок - эти, казалось бы, простейшие действия очень тяжело, а порой невозможно, совершать без буфера обмена. Также нередко требуется редактировать данные уже помещённые в буфер обмена. А чтобы что-то изменить, то это сначала нужно увидеть. Именно это и будет реализовано в данном курсовом проекте: просмотр и редактирование содержимого буфера обмена.

Данный курсовой проект можно разбить на 3 главы.

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

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

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

1. Теоретические основы

1.1 Буфер обмена

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

Если же посмотреть на буфер обмена с программной точки зрения, то можно дать такое определение:

Буфер обмена - это набор функций и сообщений, который позволяет приложениям сохранять в памяти, данные и передавать их между разными приложениями. Объект в буфере обмена может быть представлен в любом формате данных, называемом форматом буфера обмена. Каждый формат определён целым значением. Для стандартных форматов буфера обмена эти значения являются константами, определёнными в Win32 API.

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

Буфер обмена обслуживается операционной системой и характеризуется следующими свойствами:

  1. в буфере обмена хранится объект, помещенный в него одним из известных пользователю способов;
  2. в буфере обмена объект хранится до тех пор, пока не будет помещен в него новый объект;
  3. буфер обмена доступен из любого приложения;
  4. буфер обмена очищается при перезагрузке операционной системы либо специальной функцией;
  5. объект в буфере обмена хранится в формате, определяемом приложением-источником, но при его вставке в составной документ, как правило, предоставляется возможность преобразования в другой формат.

Моей целью в данном курсовом проекте является создание редактора буфера обмена. Этот программный продукт позволит просматривать данные, находящиеся в буфере и редактировать их.

1.2 Форматы данных буфера обмена

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

В данном курсовом проекте я сделаю возможность просматривать только три самых используемых пользователями формата: CF_TEXT, CF_HDROP, CF_BITMAP.

CF_TEXT - текстовый формат данных. Возможно редактировать с помощью программы notepad(Блокнот).

CF_BITMAP - графический формат данных. Возможно редактировать с помощью программы mspaint.

CF_HDROP - Дескриптор типа HDROP - это тот, который идентифицирует список файлов. Прикладная программа может извлечь информацию о файлах, передавая дескриптор функции DragQueryFile().

1.3 Используемые WIN API функции.

В проекте используется несколько WIN API функций. Конечно, в силу специфики программы, многие из них предназначены для работы с буфером обмена.

BOOL OpenClipboard (HWND hWndNewOwner);

Функция предназначена для открытия буфера обмена. Входным параметром является дескриптор окна, для которого буфер обмена будет открыт. Если передать дескриптор окна равным 0, то буфер обмена будет открыт для текущего окна. При удачном выполнении возвращает ненулевое значение.

BOOL EmptyClipboard(VOID);

Данная функция не имеет входных параметров и предназначена для очистки буфера обмена. При удачном выполнении возвращает ненулевое значение.

HANDLE GetClipboardData (UINT uFormat);

Возвращает дескриптор на данные формата, который указан как входной параметр. В данном курсовом проекте используются 3 формата: CF_TEXT, CF_HDROP, CF_BITMAP.

BOOL CloseClipboard(VOID);

Закрывает открытый ранее буфер обмена. При удачном выполнении возвращает ненулевое значение.

HANDLE SetClipboardData (UINT uFormat, HANDLE hMem);

Устанавливает данные, имеющие дескриптор hMem и формата uFormat в буфер обмена. При удачном завершении, функция вернёт дескриптор на эти же данные.

BOOL IsClipboardFormatAvailable (UINT format);

Данная функция возвращает ненулевое значение если формат данных в буфере обмена совпадает с форматом, указанным как входной параметр.

Также существуют другие