CFA LogoCFA Logo Computer
Новости Прайс-лист [Б/У] Для ноутбуков Заказ, Оплата, Доставка Сервис объявления Драйвера Статьи Как нас найти Контакты
Новости
RSS канал новостей
Компания Dell представила два новых монитора серии S. Ультратонкий Dell S2419HM на 23,8 дюйма, а ...
Подразделение компании ASUS выпускающее видеокарты сообщает о выходе новой, укороченной, версии ...
На этой неделе пользователи смогли получить первые данные о том, каким будет смартфон Motorola Moto ...
Компания Sapphire Technology в эти выходные осуществила запуск доступной модифицированной версии ...
Компания G.Skill представила миру самый быстрый в своем послужном списке комплект памяти DDR4 с ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

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

Дрессировщик мышей

Понтий ПИЛАТ p_pilat@ukr.net

Всем рано или поздно становится чертовски интересно, что же такое программирование. И в такие моменты главное — не обложиться умными книгами, а поддержать в себе азарт, не дать угаснуть его огоньку. Бесспорно, панацеей в подобных случаях является практика. Но тут уж нам придется запастись терпением и компилятором Delphi (версии 5 и выше) — самым доступным и понятным (IMHO), — не очень кривыми руками и прочими атрибутами скаутов. Я не буду останавливаться на тонких особенностях работы с этой средой разработки. Благо, достаточно информации по этому поводу уже было напечатано в МК, и все это доступно любому желающему (см. например, статью Александра МАЗУРУКА «На Delphiне в web-дизайн», МК №17 (240)).

Сегодня мы «спрограммируем» маленькую полезную утилиту, которая позволит нашему общему хвостатому другу немного поумнеть. Теперь для него не будет существовать границ экрана — упершись в одну из них, указатель мыши мгновенно выедет с другой! Сразу оговорюсь, что описываемая программа работоспособна только в операционных системах семейства NT (XP/2K), так как выполняется как сервис (служба). Что и является главной ее изюминкой.

Приступаем

Определимся: службы — это программы, которые работают в фоновом режиме на низком системном уровне и поддерживают работу других программ либо ОС в целом. Итак, запускаем Delphi, закрываем автоматически созданный проект, жмем New > Other в оконном меню и выбираем пиктограмму Service Application в окне выбора нового проекта. И вот тут нам встречается первая необычность: «А где же главная форма?..» А нет ее — если надо, создаем динамически. А так нет, ведь сервис — фоновое приложение. Но нам форма и не нужна, нам понадобится только компонент Timer (закладка System). Размещаем его прямо на белом окошке (смотри иллюстрацию). Щелкаем по таймеру дважды и пополняем код процедуры следующими строками:

После этого в Uses добавляем библиотеку Forms (возвращаемся в начало кода; после надписи uses идет перечисление подключаемых библиотек; отодвигаем символ ; в конце, ставим запятую после имени библиотеки и печатаем Forms). Теперь объясним код.

Функция GetAsyncKeyState() служит для проверки нажатия клавиши в данный момент и возвращает значение 0, если клавиша не нажата. В качестве параметра указывается код клавиши (13 — Enter). Нетрудно догадаться, что если мы зажмем клавишу Enter, мышь будет вести себя как обычно (коды других клавиш можно узнать со встроенной справки из раздела Virtual Key Codes). Если же вы, наоборот, хотите заставить мышь «умнеть» только в строго определенные моменты, исправьте символ = на <>.

В глобальных переменных Screen.Width и Screen.Height хранятся ширина и высота экрана соответственно (текущее расширение; именно из-за них мы и подключали библиотеку «Forms»). А переменная Mouse.CursorPos содержит координаты курсора мыши в данный момент (тип TPoint, потому если нужно получить доступ к конкретной X- или Y-координате, используем синтаксис Mouse.CursorPos.X или Mouse.CursorPos.Y соответственно). Нетрудно догадаться, что процедура SetCursorPos() устанавливает координаты мыши, заданные параметром. Говоря проще, программа через определенный промежуток времени проверяет координаты курсора мыши на определенное значение (в нашем случае — граничное для данного расширения), и если результат будет положительным, перебрасывает указатель мыши в противоположную сторону экрана.

Теперь некоторые изменения «косметического» характера. Таймер работает с интервалом 1000 миллисекунд по умолчанию. Поэтому алгоритм будет выполняться раз в секунду. Для комфортной работы программы советую уменьшить свойство Interval таймера до 55 (меньше не стоит, стандартный таймер не рассчитан на работу с такой точностью). Да и свойство DisplayName самого сервиса можно поменять, чтобы затем с наслаждением созерцать его в Диспетчере задач Windows.

Что ж, сохраняем проект под каким-либо именем, компилируем его —Project > Compile All Projects — и копируем готовый exe-файл в отдельную папку. Теперь, чтобы зарегистрировать сервис в системе, нужно запустить его с ключом -install. Удобно создать для этих целей ярлык. Затем, отредактировав поле Объект в свойствах ярлыка, добавив в конец строки слово -install, запускаем ярлык и перезагружаемся. Вот и все, работайте на здоровье.

В принципе, в Win9x-системах сервисные приложения тоже можно создавать и даже выполнять, но вот работать они не будут, так как сразу завершаются после запуска :-). Пользователям ОС этого семейства можно посоветовать переработать программу Сезам, описанную в предыдущих номерах МК. Таймер разместить на главной ее форме, а дальше все как описано выше.

Надеюсь, после этой статьи вы обратите внимание на сервисные приложения. Изложенный материал, конечно, не служит исчерпывающим руководством по работе с ними, но думаю, вы добьетесь успеха, если только сильно захотите…

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






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

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

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





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