Создание системных ловушек Windows на Borland C++ Builder

ОГЛАВЛЕНИЕ

Прежде чем излагать материал я хочу заметить, что цель данной работы - показать как пишутся ловушки Windows вообще. Подробности, по мере возможности, я буду опускать (их можно найти в поставляемой со средой разработке справке).

Для начала определим, что именно мы хотим сделать.

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

Предполагается, что такая программа должна иметь небольшой размер. Поэтому будем писать её с использованием только WIN API.

Понятие ловушки.

Ловушка (hook) - это механизм, который позволяет производить мониторинг сообщений системы и обрабатывать их до того как они достигнут целевой оконной процедуры.

Для обработки сообщений пишется специальная функция (Hook Procedure). Для начала срабатывания ловушки эту функцию следует специальным образом "подключить" к системе.

Если надо отслеживать сообщения всех потоков, а не только текущего, то ловушка должна быть глобальной. В этом случае функция ловушки должна находиться в DLL.

Таким образом, задача разбивается на две части:

  1. Написание DLL c функциями ловушки (их будет две: одна для клавиатуры, другая для мыши).
  2. Написание приложения, которое установит ловушку.
Читайте также:
  • Использование кода Delphi в C++Builder
    В C++Builder есть встроенный компилятор паскаля. Компилятор паскаля позволяет вам использовать код Delphi в C++Builder'е. Он может также помочь в конвертации кода из Delphi в C++Builder. Компилятор паскаля доступен как из IDE C++Builder, так и из командной строки. Непосредственное использование м...
  • Оптимизация приложений С++Builder в архитектуре клиент/сервер
    Однако сам по себе факт переноса имеющейся базы данных из настольной СУБД на какой-либо сервер баз данных с соответствующей корректировкой настроек BDE (или других средств доступа к данным) отнюдь не гарантирует повышения производительности информационной системы в целом. Представьте себе, напри...
  • Borland C++ Builder FAQ
    Получение текущей даты и времени (VCL вариант)// для получения текущей даты и времени воспользуйтесь функцией// Now() из модуля Sysutils.hpp . Отобразить полученные дату и// время можно следующим образом (Button1 - кнопка на форме):void __fastcall TForm1::Button1Click(TObject *Sender){Form1->...
  • Borland C++ Builder VCL FAQ
    Какой способ очистки TCanvas самый быстрый? АПИ функция PatBlt.Пример:PatBlt(PaintBox1->Canvas->Handle, // Handle Canvas'а       0,                      &...