InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте







Размещение сквозной ссылки

 

Измотай нервы врагу ближнему своему

Makswell

Эту статью я писал на заре своего изучения Delphi, поэтому здесь в явном виде прослеживается дух ламерства, который пронизивал мой мозг в то время, ведь тогда я еще только начинал свое знакомство с компьютером, как таковым, а заодно и знакомился с азами Дельфи-кодинга. Но, несмотря на все неточности и шероховатости, которые присутствует в статье, я все же не решился исправить ни символа в ней - нехорошо искажать память. Читайте её такой, какой она была написала 2 года назад и, как говорится, не судите строго ...


Привет всем чайникам, которые сейчас собираются прочитать мою статью. "Почему чайникам?"- спросите вы и обидетесь. А обижаться не стоит, во первых потому, что чайником быть даже лучше, сами закрутите мыслю: профессионалы - они профессионалы, т.е. всё знают, а мы чайники - т.е знаем мало, зато у нас больше возможностей, мы свободны - можем экспериментировать сколько хотим, делать что хотим(пока что-нибудь дельное не получится) и узнавать, узнавать и еще раз узнавать новое, неизведанное для себя, а потом кричать от счастья, что у нас получилось написать какой-нибудь факториал.Но это так, небольшое отступление от дела.

А рассказать я вам хочу про програму, в которой содержится всего 2 строчки кода!!! Но она зато может изрядно потрепать нервы тому, на чью машину вы её запустите(ну я думаю, что врагу надо запускать, не так ли:). Нет это не вирус, не троян, и вообще, эта программа ничего пакостного не делает, разве что может заставить сделать вынужденную перезагрузку(Reset-для тех, кто еще не понял;) Вообще, тут 1 главная строка кода, которая у меня получилась случайно - сидел я как обычно, экспериментируя над API32(в котором еще на разобрался) и вышла строчка. Также я расскажу вам, как сделать так, чтобы программа запускалась при запуске компа, причем в автозагрузке вы её не найдете(и не надо тыкать пальцем - типа списал материал, а где же я еще мог его взять:)

Ну я думая, пора уже начинать. Профессионалы, гуру, хакеры, крутые программеры могут удалиться. Все остальные: дети, женщины, военные могут остаться:)

Я думаю, вы уже запустили Delphi и что вам не надо объяснять ,как создать приложение, хотя во многих дотошных статьях и это с удовольствием указывается:)

Потороплюсь заметить, что на форме ничего размещать не надо, нам больше ничего не понадобится:)

Теперь приступаем непосредственно к процедуре по написанию программы. Мы будем обрабатывать событие OnMouseMove формы, т.е. при движении мыши над формой.

Причем желательно в свойстве WindowsState указать значение wsMaximized,а свойство BorderStyle сделать равным bsSizeable: Первое обеспечит максимальный размер формы в момент появления, т.е. во весь экран, а второе отключит в правом верхнем углу кнопки свернуть и развернуть(зачем нам это надо:).

На этом наши визуальные приготовления закончились.

Давайте напишем ту самую строчку кода для события OnMouseMove формы, нет, лучше для начала я расскажу, что собственно будет делать программа. А она при каждом движении мыши будет валить на монитор примерно по 50 окон-фреймов-сообщений - называйте их, как хотите:) Вы скажите цикл, ан нет, помните, что может делать цикл - всего-то запускать по очереди действие которое вы ему скажите, определенное кол-во раз.За это время наш враг-юзер успеет и кофе допить и Alt+Ctrl+Del нажать:()(), так что глядите:

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
MessageBox(mb_ok,'текст в заглавии сообщения','текст в самом сообщении',mb_ok);
end;

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

Что за бред подумаете вы, обычное сообщение вылетит с кнопкой Ok.

Ан нет, всё будет по-моему, ну-ка попробуйте:

Стоп: вы уже собираетесь запускать программу, а как же про окна, которые сейчас повалятся на вас, предлагаю такое решение, вы немного двигаете хвостатую, видите обвал окон и сразу же нажимаете 3 заветные клавиши, чтобы сделать destroy с программой, для тех кто не знает и никогда не знал эти клавиши, говорю: Alt+Ctrl+Del:)

А знаете, почему все это происходит, правильно, и я не знаю:)) Вообще-то у меня есть версия на счет этого, не знаю правильная:

Первый параметр отображает кнопки в окне(в данном случае она одна - mb_Ok), со вторым и третим ясно, стало быть, как мне кажется, четвертый делает действие, которое мы в нем указали, в данном случае, действие может быть только 1 - нажать какую-то кнопку, а раз кнопку мы указали такую же, что и в начале - происходит взаимооборот(какое я слово придумал:), а раз взаимооборот присходит без лепты пользователя, то программа думает, что действие не выполнено и начинает его заново(шо я тут наговорил()!!! Короче, думаю, кто-нибудь объяснит:()()()

Кстати, помните, я вам говорил поменять 2 значения, в свойствах формы, если вы не поняли, зачем это, объясняю(такой я дотошный:):

Если бы форма была маленькой(в четверть экрана), то движение по рабочему столу не приводило бы налету фреймов-убийц, и это естественно, ведь мы обрабатывали движение мыши по форме, а не по Windows(Виндоуз - это тоже программа, если не знаете и написана на C), а что касается убирания кнопок - свернуть, развернуть, то тут по моему всё ясно(форма ведь уменьшается).

Кстати, вы не заметили, что крестик, отвечающий за закрытие окна активен, т.е. форму спокойно можно закрыть, да и Alt+F4 работает. Нет, так дело не пойдет. Давайте сделаем со всем этим Destroy.

Итак, обрабатываем событие OnCloseQuery главного окна(а больше у нас их и нет:):

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
canclose:=false;
end;

В этой процедуре объявлена переменная CanClose, имеющая тип Boolean и отвечающая соответственно за работу или неработу функции закрытия окна стандартными методами(есть и не стандартные, например, Reboot, ShutDown, Reset,наконец) вообще, на земле все противоположно, если взглянуть на мир с точки зрения философии(мужчина - женщина, кошка - собака, наши - не наши, наконец); итак, проще говоря функция CanClose может равняться false(0) или true(1). False - значит ложь, то есть крестик отключен, true - абсолютно наоборот. Вообще тип Boolean - очень полезная вещь, без него практически нельзя обойтись при создании любой серьезной программы, так он действует в рамках двухвариантности, он мне например очень пригодился при создании такой крутой игрушки,как - Крестики-Нолики, которую я недавно закончил:)))

Но мы немного отвлеклись, теперь, если запустить нашу программу, то её нельзя будет закрыть стандартными способами, проверьте!!

Alt+Ctrl+Del

я не беру в счет, так как не знаю, как програмно отключать эти 3 кнопки, надеюсь, что после этой статьи мне кто-нибудь объяснит:(

На этом говорю всем До Свиданья и... всегда рад ответить на вашы вопросы, если знаю на них ответы, так что пишите...


Реклама на InfoCity

Яндекс цитирования



Финансы: форекс для тебя








1999-2009 © InfoCity.kiev.ua