Перехват системных сообщений когда программа неактивна
Горячие клавиши
Если вы решили написать более-менее серьезную программу, то вам обязательно придется столкнутся с такой проблемой с которой я столкнулся в свое время - перехват системных сообщений, когда ваша программа неактивна.Для решения таких задач часто советуют писать dll, использовать хуки, но совсем недавно я открыл для себя принципиально новый подход - регистрация горячих клавиш.
Как и положено, чтобы получше разобраться давайте напишем программу, которая даже будучи неактивной, при нажатии на сочетание клавиш - выводит сообщение.
Начнем с того, что создадим новый проект :). Далее кинем на форму всего две кнопки (TButton) и TapplicationEvents(Вкладка Additional).
Одна кнопка будет включать горячие клавиши, а другая - отключать.
Для кнопки "Включить" напишем такой обработчик события:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
bool RHKret = RegisterHotKey(Form1->Handle, WM_HOTKEY, 0x00F, MOD_ALT + MOD_CONTROL, VK_RETURN);
if (RHKret)
{
ShowMessage("Hot Key Registred");
}
}
Для "Отключить" пишем следующее:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
UnregisterHotKey(Form1->Handle, 0x00F );
}
Для ApplicationEvents1 в обработчике события OnMessage пишем:
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
bool &Handled)
{
if (Msg.message == WM_HOTKEY)
{
if (Msg.wParam == 0x00F)
{
ShowMessage("http://devoid.com.ua");
}
}
}
Как видите код несложный и его немного, поэтому я его оставлю без подробного обьяснения :)
Информация о статье "Перехват системных сообщений когда программа неактивна"
DeVoid |
http://devoid.com.ua |
26 Августа 2007 |
Просмотрели 5005 раз
КОММЕНТАРИИ
Комментариев еще нет.
Зарегистрируйтесь или выполните Вход для того чтобы оставлять комментарии
Не менее интересно
- Сохранение настроек программы в реестре
- Как использовать анимированный курсор в C++Builder
- Загрузить и сохранить настройки программы с помощью INI-файлов
- Массивы. Введение в массивы для начинающих.
- Работа с Системным реестром в C++ Builder (Класс TRegistry)
- Работа с графиками и диаграммами (TChart, Series)
- Как создать удобный интерфейс программы
- Как продать свою программу
- Пример создания и работы с DLL
- Вызов WinApi функций из C++Builder


