Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Разработка приложения, которое выполняет анализ и обработку нажатых клавиш.Содержание книги
Поиск на нашем сайте
1. Создайте проект (New Application), изображенный на рисунке 8.3). 2. Установите у объекта Form1 свойство Caption равным «ХХХ». Это необходимо потому, что DLL необходимо знать имя окна, которому передаются сообщения с помощью функции SendMessage. 3. Перенесите на форму компоненты, указанные в таблице 8.1.
Таблица 8.1 Визуальные компоненты приложения
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 с.) |