Blog. Just Blog

Как узнать окно-владельца буфера обмена

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Образ мышления: Assembler | Автор: ManHunter
Как узнать окно-владельца буфера обмена
Как узнать окно-владельца буфера обмена

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

Для получения информации об окне, которое владеет буфером обмена, используются две функции: GetClipboardOwner и GetOpenClipboardWindow. Несмотря на схожие задачи, они отличаются по логике работы.

GetClipboardOwner возвращает хэндл окна, которое открыло буфер обмена и вызывало функцию EmptyClipboard. До момента изменения буфера обмена функция возвращает пустое значение. Но после очистки содержимого буфера обмена, результат функции сохраняется как при открытом буфере обмена, так и после его закрытия.

А вот функция GetOpenClipboardWindow возвращает хэндл именно того окна, который был указан при вызове функции OpenClipboard. Результат функции сохраняется до закрытия буфера обмена. Тут нужно учитывать, что если буфер обмена открыт, но не ассоциирован ни с одним существующим окном, то функция вернет NULL.

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

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

Примеры программ с исходными текстами (FASM)Примеры программ с исходными текстами (FASM)

Get.Clipboard.Owner.Demo.zip (4,497 bytes)


Поделиться ссылкой ВКонтакте
Просмотров: 352 | Комментариев: 0

Метки: Assembler

Комментарии

Отзывы посетителей сайта о статье
Комментариeв нет

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0036 сек.) / Память: 4.5 Mb
Наверх