Сделай сам: IE и Delphi – вместе веселее!
28.01.2008 от Иван ШиркоСегодня мы займёмся самым популярным web-браузером в мире – Internet Explorer'ом. Кто-то обожает эту программу, кто-то терпеть её не может, но, как ни крути, пока что ни один конкурент IE не может приблизиться к нему по возможностям (не считая, конечно, браузеров, построенных на движке IE). Итак, что мы будем делать с IE? Да ничего страшного… Мы просто научимся управлять им так же, как и любым другим окном. Для закрепления полученных знаний сделаем программу для управления IE при помощи горячих клавиш. Для пущего эффекта добавим иконку программы на Системную панель (SysTray). Итак, поехали…
Первым делом разберёмся с двумя приёмами программирования, которые мы будем использовать и в последующих статьях данного цикла:
1) Как работать с "горячими" клавишами?
2) Как добавить свой значок на Системную Панель (SysTray, можно узнать по характерным для неё часикам)?
На первый вопрос я уже дал частичный ответ в статье Сделай сам: "Вскрывалка паролей", но нам нужно копнуть немного глубже, а второй вопрос мы ещё вообще не затрагивали.
Работа с "горячими" клавишами
Для работы с "горячими" клавишами вполне достаточно использования лишь двух функций: 1) Регистрирует "горячие" клавиши:
BOOL RegisterHotKey(
HWND hWnd, // этому окну придёт уведомление о нажатии комбинации клавиш
int id, // идентификатор "горячих" клавиш
UINT fsModifiers, // должны ли быть нажаты клавиши Ctrl, Shift, Alt или Win
UINT vk // код клавиши, на которую мы будем реагировать
);
2) Удаляет "горячие" клавиши
BOOL UnregisterHotKey(
HWND hWnd, // окно, ассоциированное с "горячими" клавишами
int id // идентификатор "горячих" клавиш
);
Всё бы ничего, да вот при работе с "горячими" клавишами из DLL (динамически подключаемой библиотеки) могут возникнуть проблемы с идентификаторами. Чтобы этого избежать следует использовать функцию GlobalAddAtom, которая возвратит нам уникальный идентификатор (атом) требуемого формата. После завершения работы с "горячими" клавишами атом нужно удалить при помощи функции GlobalDeleteAtom. Работу с атомами мы рассмотрим в одной из следующих статей, где будем использовать DLL.
Помещение своей иконки в SysTray
Бывают такие программы, которые постоянно должны быть активны в системе. Они довольно часто помещают свой значок на Системную панель, чтобы не надоедать пользователю присутствием своего окна и в то же время оставить возможность "достучаться" до программы. Для управления иконкой на Системной панели используется функция
Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconData): BOOL;
Рубрики: Delphi, Сделай сам |
28.06.2009 в 14:21
Что-то так не выходит ничего