CFA LogoCFA Logo Computer
Загрузка поиска
Новости Компьютеры Прайс-лист [Новое] Прайс-лист [Б/У] Для ноутбуков Конфигуратор ПК Заказ, Оплата, Доставка Сервис объявления Драйвера Статьи Как нас найти Контакты
Новости
RSS канал новостей
Компания ASRock представила мировой общественности материнскую плату H110-STX MXM, которая рассчитана ...
Компания MSI в рамках серии Arsenal Gaming представляет пользователям материнские платы линейки ...
По данным наших коллег, в этом месяце компания Huawei официально представит свой новый смартфон. ...
Поколение процессоров Broadwell-EX, представленное Intel в июне прошлого года, обзавелось новым ...
Что мы с вами знаем о принтерах? На бытовом уровне, конечно, есть определённое представление. – ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

Пользователь и его тень

Денис НАЗАРЕНКО

Иногда наступает момент, когда хочется отложить работу, забыть о базах данных и немного поразвлечься. Один из способов это сделать — подшутить над любимым начальником или, по крайней мере, над кем-нибудь за соседним компьютером. В Интернете можно найти множество таких «шуточных» программок, но ведь настоящие программисты пишут такие программы сами. В функциях Windows API заложено достаточно много возможностей для реализации чувства юмора программистов. Предлагаю вам ознакомиться с некоторыми из них.

Получение и изменение координат курсора.

Для получения координат курсора используется функция:

В переменных LpPoint.x и lpPoint.y функция возвращает текущие координаты курсора относительно экрана. Во время ее вызова ваша программа необязательно должна иметь фокус ввода. Достаточно вызвать эту функцию в обработчике событий таймера, узнавать о положении курсора в независимости от того, с какой программой на данный момент работает пользователь. Это показано в Примере 1.

Для изменения координат курсора используется функция:

Как и предыдущая, эта функция позволяет управлять курсором в независимости от того, какая программа активна. Используя эти две функции, можно сделать простую программу, которая будет записывать положение курсора, а затем воспроизводить его, как это показано в Примере 2.

А вот в этой программке показано, как сделать курсор движущимся в противоположную сторону.

Обратите внимание, что откомпилированная программа занимает 18 Кб. Это связано с тем, что в программе не используется модуль Forms, и вместо стандартных для Delphi screen.width и screen.height используется вызов функций API GetSystemMetrics(SM_CXSCREEN) и GetSystemMetrics(SM_CYSCREEN).

Получение информации о состоянии клавиши.

О состоянии клавиши на клавиатуре или мышке мы можем узнать из функции

Вот несколько строчек, наглядно демонстрирующих использование этой функции:

Существует еще одна функция —GetAsyncKeyState, позволяющая определить состояние кнопок. Отличается она тем, что позволяет узнать, была ли нажата нужная клавиша с момента последнего вызова этой функции. К сожалению, эта функция не работает, если клавиша была нажата вне фокуса ввода приложения. С использованием этих функций вы сможете познакомиться в Примере 4.

Имитация нажатия пользователем клавиш.

А теперь самое интересное. Оказывается, в Windows есть функции, позволяющие имитировать нажатие пользователем клавиш:

Начиная с Windows 98 и Windows NT 4.0 SP3, Microsoft рекомендует использовать функцию:

Посмотрите внимательно на приведенный ниже фрагмент программы. Процедура TypeWords позволяет добиться эффекта имитации работы пользователя на клавиатуре:

Обратите внимание на то, что для набора букв в верхнем регистре необходимо нажать клавишу Shift. Точно так же следует поступать, если вам необходимо набрать комбинацию клавиш с нажатой кнопкой Ctrl. В Примере 5 показано использование этой процедуры для работы с мышкой.

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

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы: *
captcha
Обновить






Рейтинг@Mail.ru
Хостинг на серверах в Украине, США и Германии. © www.sector.biz.ua 2006-2015 design by Vadim Popov