Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Разработка приложения, которое выполняет анализ и обработку нажатых клавиш.

Поиск

1. Создайте проект (New Application), изображенный на рисунке 8.3).

2. Установите у объекта Form1 свойство Caption равным «ХХХ». Это необходимо потому, что DLL необходимо знать имя окна, которому передаются сообщения с помощью функции SendMessage.

3. Перенесите на форму компоненты, указанные в таблице 8.1.

 

 

Таблица 8.1 Визуальные компоненты приложения

Компонент Класс Описание
  Label1 TLabel Для вывода на экран кода очередной нажатой клавиши
  Button1 TButton Кнопка «Выход»

4. Проверьте, включены ли в проект (в блоке uses) следующие библиотеки:

uses

WinTypes,WinProcs, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

 

5. В блоке const опишите пользовательские сообщения:

Const

{ пользовательские сообщения }

wm_LeftShow_Event=wm_User + 133; {Клавиша влево}

wm_RightShow_Event=wm_User + 134; {Клавиша вправо}

wm_UpShow_Event=wm_User + 135; {Клавиша вверх}

wm_DownShow_Event=wm_User + 136; {Клавиша вниз}

wm_Other_Event=wm_User + 137; {Все остальные клавиши}

 

6. В блоке private выполните предварительное описание процедур обработки нажатых клавиш:

 

private

procedure WM_LeftMSG(Var M: TMessage); message wm_LeftShow_Event;

procedure WM_RightMSG(Var M: TMessage); message wm_RightShow_Event;

procedure WM_UpMSG(Var M: TMessage); message wm_UpShow_Event;

procedure WM_DownMSG(Var M: TMessage); message wm_DownShow_Event;

procedure WM_OtherMSG(Var M: TMessage); message wm_Other_Event;

end;

 

7. В блоке Var определите глобальную переменную P – указатель на функцию из DLL (Key_Hook)

var

Form1: TForm1;

P:Pointer;

 

8. В блоке implementation выполните загрузку DLL:

implementation

{$R *.DFM}

// Загрузка DLL

function Key_Hook(Code: integer; wParam: word; lParam: Longint): Longint;

stdcall; external 'SendKey.dll' name 'Key_Hook';

 

9. Выполните описание процедур:

procedure TForm1.WM_LeftMSG(Var M: TMessage);

begin

Label1.Caption:= 'Left';

end;

 

procedure TForm1.WM_RightMSG(Var M: TMessage);

begin

Label1.Caption:= 'Right';

end;

 

procedure TForm1.WM_UpMSG(Var M: TMessage);

begin

Label1.Caption:= 'Up';

end;

 

procedure TForm1.WM_DownMSG (Var M: TMessage);

begin

Label1.Caption:= 'Down';

end;

 

procedure TForm1.WM_OtherMSG(Var M: TMessage);

begin

Label1.Caption:=chr(M.LParam);

end;

 

10. Для компонента Form1 запрограммируйте событие OnCreate следующим образом:

procedure TForm1.FormCreate(Sender: TObject);

begin

{ если не использовать вызов процедуры из DLL в программе, то компилятор удалит загрузку DLL из программы }

P:=@Key_Hook;

 

end;

11. Откомпилируйте приложение и проверьте его работу.

8.4 Индивидуальные задания

Вариант 1

1. Создайте DLL, содержащую функцию для вычисления n!. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

2. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные идентификаторы (идентификатор – слово, состоящее из букв и цифр, причем первый символ обязательно буква).

Вариант 2

1. Создайте DLL, содержащую функцию для вычисления.

 

 

Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

2. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные IP-адреса.

Вариант 3

3. Создайте DLL, содержащую функцию для вычисления an. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

4. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все встреченные имена. Именем, для простоты реализации, будем считать любое слово, начинающееся с заглавной буквы.

 

 

Вариант 4

1. Создайте DLL, содержащую функцию для вычисления a(a+1)…(a+n-1). Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

2. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные PIN-коды. Будем считать, что PIN-код – слово, состоящее только из одних цифр.

 

Вариант 5

3. Создайте DLL, содержащую функцию для вычисления a(a-n)(a-2n)…(a-n2). Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

4. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите информацию о перехваченных клавишах в файл.

 

Вариант 6

3. Создайте DLL, содержащую функцию для вычисления . Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

4. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные телефонные номера.

 

Вариант 7

3. Создайте DLL, содержащую функцию для вычисления Sin (x)+ Sin2 (x)+….+ Sinn (x). Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

4. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные доменные имена.

Вариант 8

3. Создайте DLL, содержащую функцию для вычисления Sin (x)+ Sin (x2)+….+ Sin (xn). Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

4. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все номера сотовых телефонов. Номером сотового телефона будем считать любое слово, начинающееся со знака «+» и состоящее из цифр и знакос «-»

 

Вариант 9

3. Создайте DLL, содержащую функцию для вычисления y=4x3-2x2+5. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

4. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные адреса. Адресом будем считать предложение, содержащее с шестизначный индекс

 

Вариант 10

4. Создайте DLL, содержащую функцию для вычисления . Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

5. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Запишите в файл все перехваченные денежные суммы в долларах.

 

Вариант 11

1. Создайте DLL, содержащую функцию для вычисления функции .

Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

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

Вариант 12

1. Создайте DLL, содержащую функцию для вычисления наибольшего общего делителя (НОД) двух чисел. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

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

Вариант 13

1. Создайте DLL, содержащую функцию для определения, является ли год високосным. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL. Входным параметром является число – год. Функция возвращает строку с ответом. Год является високосным, если его номер кратен 4, однако из кратных 100 високосными являются лишь кратные 400. например, 1700, 1800 и 1900 годы – не високосные, а 2000 – високосный.

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

Вариант 14

1. Создайте DLL, содержащую функцию для вычисления года рождения по старому японскому календарю. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL. В старояпонском календаре был принят 60-летний цикл, состоящий из пяти 12-летних подциклов. Подциклы обозначались названиями цвета: зеленый, красный, желтый, белый и черный. Внутри каждого подцикла года носили названия животных: крыса, корова, тигр, заяц, дракон, змея, лошадь, овца, обезьяна курица, собака и свинья. Например, 1984 год – год начала очередного цикла – назывался годом зеленой крысы.

2. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл информацию о количестве введенных предложений..

Вариант 15

1. Создайте DLL, содержащую функции для шифрования и дешифрования строки шифром Атбаш (первая буква алфавита заменяется на последнюю, вторая буква алфавита на предпоследнюю и т.д.). Входными данными является исходная строка. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

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

Вариант 16

1. Создайте DLL, содержащую функции для шифрования и дешифрования строки шифром Цезаря. Входными данными являются исходная строка и ключ. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL. При шифровании методом Цезаря каждый символ в открытом тексте заменяется буквой находящейся на некоторое постоянное число позиций левее или правее него в алфавите. Например, в шифре со сдвигом 3, А была бы заменена на Г, Б станет Д, и так далее.

2. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл все вводимые URL (слова,начинающиеся с префикса http://,ftp://,smtp:// и т.д.)


Вариант 17

1. Создайте DLL, содержащую функции для перевода числа x из десятичной системы в восьмеричную и, наоборот, из восьмерично в десятичную. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

2. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл все вызываемые скрипты (слова, содержащие символы «.exe», «.dll», «.cgi», «.php», «.asp» и.т.д.).

Вариант 18

1. Создайте DLL, содержащую функции для перевода числа x из десятичной системы в шестнадцатеричную и, наоборот, из шестнадцатеричной в десятичную. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

2. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл все предложения, содержащие идентификаторы (идентификатор – слово, состоящее из букв и цифр, причем первый символ обязательно буква).

Вариант 19

1. Создайте DLL, содержащую функции для перевода числа x из десятичной системы в двоичную и, наоборот, из двоичной в десятичную. Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

2. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл все предложения, содержащие номера телефонов.

 

Вариант 20

1. Создайте DLL, содержащую функцию для вычисления . Выполните вызов этой функции из приложения, используя явную и неявную загрузку DLL.

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

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Перечислите основные системные DLL ОС Windows.

2. Сравните явную и неявную загрузку DLL.

3. Что означают такие понятия, как «экспорт функции по имени» и «экспорт функции по номеру»?

4. Для каких целей в исполняемом файле служит таблица экспорта и таблица импорта?

5. В каких исполняемых файлах, как правило, отсутствует таблица экспорта.

 

ЛАБОРАТОРНАЯ РАБОТА № 9

ОТСЛЕЖИВАНИЕ ИЗМЕНЕНИЙ ФАЙЛОВОЙ СИСТЕМЫ

Цель работы

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

Теоретическое введение

Многим программам необходимо узнавать об изменениях, происшед­ших в файловой системе. Например, стандартное Диалоговое окно File Open в Windows автоматически обновляет свое содер­жимое при любых изменениях в файловой системе.

Возможность динамического уведомления приложений об изменениях файловой системе требовалась столь часто, что в Windows
введена прямая поддержка данной возможности.



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 278; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.144.239 (0.007 с.)