Цикл приколов на Делфи: «Падающая мышка»

Скажите, не хотелось бы вам хотя бы раз подшутить над своими друзьями или коллегами по работе? А может, нужно проучить зарвавшегося бухгалтера? Если да, то можете продолжать читать статью. Приколы бывают разные. Помню, одно время широко был распространен в сети прикол, имитирующий форматирование диска. Вообще, для программиста писать подобную ерунду –себе дороже. Тебя просто посчитают идиотом и перестанут обращать внимание на твои «проказы». Тем не менее, некоторая встряска им все же нужна, хотя бы для того, чтобы поднять свой авторитет. Скажу сразу – ничего серьезного вы здесь не увидите. Кроме того, опытным программистам и вовсе здесь делать нечего. Я не хотел писать этот цикл, но попросили мои ученики. Что ж, друзья, давайте приступим. В качестве инструмента я буду использовать Делфи. Однако данные «шутки» легко портировать и на другие языки. Важен лишь сам алгоритм. В этой статье мы заставим курсор мышки падать. Для этого нам понадобятся всего три функции Win32 Api: GetCursorPos – служит для получения координат курсора на экране, WaitForSingleObject – для задания таймаута объекту и SetCursorPos — задаем координаты указателя. Можно использовать и функцию Sleep () для задержки, но это будет и вовсе просто. Привыкайте к синтаксису. Итак, давайте приступим. Для начала, нам нужно создать проект VCL Application, который мы назовем FallingMouse, хотя можете назвать его как угодно, лишь бы вы сами его нашли. Здесь все очень просто, поэтому я останавливаться не буду. Оговорюсь сразу –наш проект получился слишком большой и очень неудобный из-за VCL. Кроме того, я сознательно оставляю его видимым в диспетчере задач, хотя спрятать его нет никаких проблем. Однако в силу того, что некоторые ребята ожидают здесь найти руководство к написанию «Аццкого вируса!» я опущу многие детали. Писать приколы весело, а вирусы –подло. Поставьте сразу у формы свойство Visible в false. Это нужно для того, чтобы форма не отображалась на экране. Это очень простой проект и поэтому я привожу пример с формой. В других статьях я покажу, как это сделать более элегантно. Теперь найдите событие формы OnCreate (просто щелкните дважды по форме) и вбейте туда следующий код: [delphi] procedureTForm2.FormCreate(Sender:TObject); var mpos:tpoint; index:double; h:hwnd; flag:boolean; begin flag:=true; h:=createevent(nil,true,false,’ut’); index:=1; Randomize; while flag do begin GetCursorPos(mpos); ifmpos.y>=screen.height-20thenbegin WaitForSingleObject(h,Random(10000)); index:=1; GetCursorPos(mpos); end; index:=index+index/30; mpos.y:=mpos.y+round(index); SetCursorPos(mpos.x,mpos.y); application.processmessages; WaitForSingleObject(h,10); end; end; end. [/delphi]   Скомпилируйте и запустите. Еще желательно добавить программу в автозапуск, но это вы сможете сделать в дальнейшем и сами. Шутка будет все время тянуть вниз курсор через рандомный промежуток времени. Об основных функция я уже сказал. Теперь немного по коду. Самое главное здесь – это бесконечный цикл, для которого я поставил флаг. Однако можно вполне обойтись и просто true. Это то же самое. В этом цикле и протекают все процессы. Мы получаем текущие координаты мышки и если они нас не устраивают (если курсор внизу), пока затаиваемся на рандомное количество миллисекунд. Если же все во порядке — опускаем курсор вниз и вновь затаиваемся, когда он достигнет низа экрана. И так все по-новой. Антивирусы не реагируют на эту программку, а пользователь будет думать, что у него неполадки с мышкой. На этом урок закончен. Другие приколы будут гораздо лучше и сложнее.

Комментарии

3 комментария на “Цикл приколов на Делфи: «Падающая мышка»”
  1. Дима:

    3дравствуйте,можите обучать урокам по дельфи?разумеется за денюжку.

    • admin:

      Да, конечно. Можно устроить занятия в форме вебинара. Кроме того, я скоро доделаю видеокурсы по программированию на Делфи и C++. Можно будет просто купить по Делфи. В любом случае, это все обсуждаемо.

  2. Дмитрий:

    Спасибо!а цены какие на уроки?

Добавить комментарий

Внимание! Не будут добавляться комментарии в виде откровенного спама или прямого анкора на свои сайты. Все спамеры будут передаваться в базу Akismet

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: