Программное обеспечение для удаленного управления персональным компьютером IBM PC, оснащенным операционной системой Windows 9X/NT/2000

Страницы работы

7 страниц (Word-файл)

Содержание работы

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

Обработка сообщений клавиатуры в библиотеке:

Активизация обработчика HOOK клавиатуры происходит вызовом импортируемой функции  void _import Keyboard_Hook_Active(), после чего все сообщения от клавиатуры проходят через функцию возврата: LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam), которая располагается в библиотеке.

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) выполняет следующие действия:

1.  Проверка повторного нажатия клавиши, в случае выполнения условия клавиша игнорируется. 

2.  Определение факта отпускания клавиши (KEYUP), для однозначной идентификации нажатия.

3.  Осуществляет поиск окна формы для посылки формируемого сообщения содержащего виртуальный код клавиши и дополнительные параметры.

4.   При идентификации клавиши Enter формируется дополнительный параметр в  сообщении lParam=20 – сообщающий приложению – обработчику о завершении строки набираемой пользователем.

5.  Принимается условие о включении или выключении клавиатуры на рабочей станции.

6.  Посылается сообщение приложению-обработчику, содержащему виртуальный код клавиши и параметр регулирования обработки сообщения.

Отключение HOOK клавиатуры происходит вызовом функции UnhookWindowsHookEx(hhook). 

Обработка сообщений манипулятора мышь в библиотеке:

Активизация обработчика HOOK манипулятора мышь происходит вызовом импортируемой функции  void _export Mouse_Hook_Active(), после чего все сообщения от мыши проходят через функцию возврата: LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam), которая располагается в библиотеке.

LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)  выполняет следующие действия:

  1. Определяется факт нажатия правой или левой кнопки манипулятора мышь.
  2. Формируется сообщение, по значениям параметров которого можно идентифицировать, что текущее сообщение поступило от мыши.  
  3. Принимается условие о включении или выключении мыши на рабочей станции.  

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

Список функций приложения –обработчика: 

Приложение-обработчик в дальнейшем именуем обработчик

При посылке сообщения из библиотеке обработчик вызывает функцию bool __fastcall HOOK_KEYBOARD_MSG(TMessage &Message),  которая выполняет следующие действия:

  1. Из сообщения определяется факт нажатия на кнопку Enter на клавиатуре  или мыши.
  2. Выясняется текущая раскладка клавиатуры и обработка виртуального сан-кода в соответствии с английской или русской раскладкой. Названия кнопок типа ins, home и.т.д. возвращаются в сокращенном варианте, понятном пользователю.    
  3. Накапливается строка символов, в случае превышения максимальной длинны строки в таблице, или нажатия клавиши Еnter, или любую клавишу мыши, формируется признак завершения текущей строки (E – нажатие клавиши Enter, M – нажатие на кнопку мыши, R -  Range: переполнение).
  4. В случае превышения максимального значения строк в таблице, происходит обновление старых записей – новыми.
  5. При поступлении записи в таблицу, содержимое таблицы сохранятся на диске в файле, готовом для отправки на сервер.
  6. Параметры длинны строки  и количество строк в таблице можно изменять.
  7. Обновление текущего времени активности клавиатуры и мышки.

Функция  AnsiString __fastcallConver_IntTo_Keyboard_Key_Ang(intVirtualKey) конвертирует вируальный  код клавиши  полученный из библиотеки в символ английского алфавита верхнего или нижнего регистра, в зависимости от состояния клавиши CAPSLOCK. 

Похожие материалы

Информация о работе