Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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. 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, содержащую функцию для вычисления 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, содержащую функцию для вычисления 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, содержащую функцию для вычисления 2. Создайте dll, которая выполняет перехват нажатых клавиш, используя функцию SetWindowshookEx. Функция записывает в файл информацию об общем количестве нажатых клавиш, количестве букв, цифр, служебных символов и предложений. КОНТРОЛЬНЫЕ ВОПРОСЫ 1. Перечислите основные системные DLL ОС Windows. 2. Сравните явную и неявную загрузку DLL. 3. Что означают такие понятия, как «экспорт функции по имени» и «экспорт функции по номеру»? 4. Для каких целей в исполняемом файле служит таблица экспорта и таблица импорта? 5. В каких исполняемых файлах, как правило, отсутствует таблица экспорта.
ЛАБОРАТОРНАЯ РАБОТА № 9 ОТСЛЕЖИВАНИЕ ИЗМЕНЕНИЙ ФАЙЛОВОЙ СИСТЕМЫ Цель работы Целью данной работы изучение функций FindFirstChangeNotification и FindNextChangeNotification, с помощью которых можно отслеживать любые изменения файловой системы в выбранных каталогах. Выполнение данной работы предполагает, знание принципа работы Wait-функций, рассмотренных в лабораторной работе № 7. Теоретическое введение Многим программам необходимо узнавать об изменениях, происшедших в файловой системе. Например, стандартное Диалоговое окно File Open в Windows автоматически обновляет свое содержимое при любых изменениях в файловой системе. Возможность динамического уведомления приложений об изменениях файловой системе требовалась столь часто, что в Windows
|
||||||||||||||
|
Последнее изменение этой страницы: 2017-02-06; просмотров: 404; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.01 с.) |