Пишемо клавіатурний шпигун на Делфі 7

Опис: function GetAsyncKeyState (Key: Integer): Integer;
Опpеделяет стан виpтуальной клавіші.
Параметри: Key: Код виpтуальной клавіші.
Значення, що повертається: Якщо встановлено стаpший байт, клавіша Key знаходиться в натиснутому положенні, а якщо молодший, то клавіша Key була натиснута після попередніх виклику функції.

Також нам знадобитися функція GetForegroundWindow - повертає дескриптор пріоритетного вікна (вікна, з яким користувач в даний час працює). Система присвоює трохи вищий пріоритет потоку, який створює пріоритетне вікно, ніж той, який вона дає іншим потокам.

Я думаю, цього достатньо для базового розуміння того, як ми збираємося все це справа реалізувати. Переступимо до створення форми і написання коду.

Почнемо по порядку: відкриваємо Делфі, заздалегідь зберігаємо наш проект, заходимо в обробник подій нашої форми вкладка Events і знаходимо подія OnShow, два рази клацаємо лівою клавішею миші на подію і пишемо код.

Потім клацаємо на подію OnCreate ця подія викликається при відкритті самої програми, в ній пишемо наступне.

Так само не забуваємо після даної команди в uses проекту додати RegisTry а так само заздалегідь додамо і ShellApi це нам стати в нагоді в подальшому.

Тепер перейдемо до найцікавішого і кинемо на нашу форму Memo з вкладки компонентів Standart ім'я якому створиться автоматично Memo1 а так само з цієї ж вкладці кинемо на форму два компоненти Button з іменами Button1 і Button2 перейдемо у вкладку компонентів System і кинемо на форму два компоненти Timer з іменами Timer1 і Timer2 і кинемо останній один компонент Label з вкладки компонентів Standart з ім'ям Label1 і тепер можна вже починати писати код.

Виділимо компонент Timer1 на формі і в Object Inspector у вкладці Properties виставимо інтервал там коштує 1000 (тобто 1 секунда) а ми виставимо 1, і доступність Enabled там автоматично виставлена ​​True так і залишаємо, тепер переходимо у вкладку Events і там всього одна подія OnTimer , клацаємо по ньому два рази лівою клавішею миші і пишемо код.

Ось власне натискання клавіш ми здійснили, тепер нам потрібно зробити подія при віджиманні клавіш, для цього нам і знадобився другий таймер. Натискаємо на формі на компонент Timer2 і налаштовуємо його так само, як і перший таймер, інтервал ставимо 1, клацаємо на подію OnTimer і пишемо код.

Подія на віджимання клавіш ми зробили, тепер залишилося ще трошки, на формі два рази клацаємо лівої кнопки миші на компонент Button2 і нам автоматом відкривається подія кнопки OnClick, далі пишемо код на висновок процесу, в даний момент знаходиться в фокусі.

Тепер залишився останній штрих: нам потрібно записати набраний текст з Memo1 в текстовий документ, створення якого ми зараз реалізуємо, на формі натискаємо на компонент Button1, так само відкриваємо подія OnClick і пишемо код.

Ось власне і все, ми здійснили глобальний перехоплення клавіатури, абсолютно нечутливий до заклинань будь-яких антивірусів, правда, як бачимо, перехоплюємо тільки в російськомовній розкладці, але набагато краще, ніж використовувати dll бібліотеки, які вистачає за горло кожен антивірус.

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