Навигация
  Главня
Статьи
-Сеть
--Безопасность
-Графика
--Photoshop
--Corel Draw
--Illustrator
-ОС
--Windows
--Linux
--Unix
-SEO
-Дизайн
--Web-Design
-Разное
-Программирование
--Delphy
--C/C++
--.NET
--PHP
--Pascal
--Perl
--Visual Basic
--Ассемблер
--Java
--Java Script
--ASP
Книги

Карта Сайта
Наши Сайты
Обратная связь
Новое на сайте
Статьи про любовь

 
Вход
 
Логин
Пароль
 

 
Найти
 

 
Партнёры
 

 
Статистика
 

 
Популярное
 

 
Календарь
 
«    Май 2013    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 

 
Архив
  Сентябрь 2008 (4)
Июнь 2008 (4)
Май 2008 (12)
Апрель 2008 (49)
Март 2008 (51)
Февраль 2008 (73)
Январь 2008 (40)
Декабрь 2007 (58)
Ноябрь 2007 (61)
Октябрь 2007 (51)
Сентябрь 2007 (82)

 
Реклама
  Кулинарные рецепты на Cook-room.com - с пошаговыми фото

 
Казино
 

Интернет-казино Grand Casino произвело фурор в игорном мире. Одно из самых важных нововведений - наличие системы контроля честности всех азартных игр казино. Наличие контроля честности дает возможность полностью уйти в игру, не задумываясь о подтасовке или обмане. В Grand Casino можно пополнить счет и вывести выигрыш большим количеством способов:(SMS, E-gold, Rupay, Яндекс.Деньги, Webmoney,Кредитные карты,...). Теперь азартные игры на деньги стали доступнее. Предоставлены игры: Рулетка, Покер, Блэкджек, Видео Покер, Игровые автоматы, Кено.

   

Статьи » Программирование » Delphi » Три прикола в Дельфи!

Сейчас я покажу, как своими руками написать три прикола в DELPHI. Итак, приступим сразу к делу.

Прикол первый:
Давайте напишем программу, которая будет выводить в какую-то часть экрана кнопку с надписью «нажми на меня», а если объект нашего прикола все же решится нажать на кнопку, то его экран засыплет кнопками с соответствующей надписью!

Создайте новый проект (надеюсь не надо объяснять как =)) на форму в левый верхний угол поместите кнопку и поменяйте ей свойство Caption на «нажми на меня» (без кавычек).

В свойстве формы BorderStyle поставьте bsNone в свойстве FormStyle поставьте fsStayOnTop, чтобы окно было всегда поверх остальных и не имело никаких обрамлений. После всего этого можете поставить на форму компонент XPManifest(если у вас DELPHI 7 и выше), чтобы кнопка была в стиле XP(я обошелся без этого). Теперь создайте обработчик нажатия на кнопку и поместите туда следующий код:


var
X: TForm1; // переменная типа TForm1 для создания нового окна
begin
X:= TForm1.Create(NIL); // создаем новую форму
ShowWindow(X.Handle, SW_SHOW); // показываем новую форму
ShowWindow(X.Button1.Handle, SW_SHOW); // показываем кнопку
X.Top:= Random(Screen.Height); // меняем положение окна
X.Left:= Random(Screen.Width);
X.Repaint; // Перерисовываем окно (чтобы оно отобразилось коррекно)
Sleep(100); //делаем паузу чтобы пользователь попытался что-то сделать
Button1.Click; // снова щелкаем по кнопке
end;


в общем-то здесь можно разобраться по комментариям, но для особо «понятливых» :) поясню. В начале я описываю переменную Х класса TForm1, потом создаю его, также как обычный объект. Но если я просто создам форму то на экране ничего не появится т.к форма созданная таким образом изначально невидима, а чтобы она появилась я вызываю процедуру ShowWindow, ей надо передать два параметра первый это окно, а второй это параметр определяющий будет ли видно окно он может иметь следующие виды:

1: SW_SHOW- окно видимо как обычное окно.
2: SW_HIDE- окно невидимо.
3: SW_MINIMIZE- окно будет свернуто на панель задач.
4: SW_MAXIMIZE- окно будет развернуто на весь экран.
5: SW_RESTORE- если я не ошибаюсь то окно будет восстановлено в нормальное положение.

В принципе параметров много и все я здесь описывать не буду - это лишь основная часть.
Если окно показать просто так то кроме пустого пятна мы не увидим ни чего, чтобы на окне была кнопка надо ее показать тем же методом что и саму форму, к счастью кнопка тоже имеет свойство Handle- это ее окно и мы его тоже должны показать! Потом я меняю положение окна (надеюсь это понятно =)). Потом окно надо ОБЯЗАТЕЛЬНО перерисовать, вызвав метод Repaint самого окна, иначе есть вероятность вместо окна увидеть квадрат или вообще ничего! Потом ждем 100 миллисекунд и опять жмем на кнопку, повторяя те же нехитрые действия пока комп не повиснет =) или наш процесс в Диспетчере задач не убьют :( . В обработчике создания главной формы напишите следующие:


procedure TForm1.FormCreate(Sender: TObject);
begin
Width:= Button1.Width; // Меняем размеры у главного окна
Height:= Button1.Height;
end;


Это нужно для того чтобы и форма и кнопка имела одинаковый размер будет ощущение что кнопка одна без формы «висит» на экране. Размеры я меняю программно (не в среде DELPHI) т.к мышкой нужные размеры поставить не всегда можно, особенно если кнопка очень маленькая. Затем в обработчике ОТОБРАЖЕНИЯ формы напиши следующее:


procedure TForm1.FormShow(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE); // прячемся с панели задач
end;


Здесь мы исчезаем панели задач вызвав метод ShowWindow и в качестве первого параметра передав окно программы(или как это по научному звучит).

Кто-то скажет: «Че за маразм, почему мы прячемся и изменяем свои размеры в разных обработчиках?», а маразм в том, что если все написать в обработчик создания формы то изображение нашей программы не исчезнет с панели задач, а если все накатать в обработчик показания окна, то размеры не изменятся вот и приходится страдать маразмом и писать непонятные программы! =) Фу, кажется, с первым приколом разобрались! Теперь я опишу второй.

Прикол второй.
Принтер великая вещь я вам скажу, захочешь распечатать статью, например о SQL injection- пожалуйста. А еще принтер это хороший объект для шутки из-за того, что большинство принтеров от этих самых шуток вообще не защищены! Давайте распечатаем на DELPHI пустой лист бумаги, а заодно испугаем этим кого нибуть, заставив переустановить драйвер принтера! Писать будем без VCL поэтому сразу удалите окно нового проекта. Теперь в главном меню Project выберите View Source и в появившемся окне вставьте следующий код:


program Project1;
uses
Printers, Windows; // добавляем модуль для работы с принтером
var
f: TextFile; // переменная для печати текста
begin
while true do // запускаем бесконечный цикл
begin
Sleep(120000); // ждем 2 минуты
AssignPrn(f); // открываем принтер в режиме текстовой печати
Rewrite(f); // открываем файл печати
CloseFile(f); // закрываем файл печати
end;
end.


И так что здесь происходит? В начале я добавляю модуль для печати Printers там есть все для печати. Потом описываем переменную f типа TextFile. Затем я запускаю бесконечный цикл, в котором я в начале жду 2 минуты, потом я открываю принтер методом AssignPrn ему нужно передать переменную типа TextFile, теперь нашей переменной назначен принтер по умолчанию. Процедурой Rewrite я открываю файл печати, это и есть начало печати, после всего этого я закрываю файл и жду еще 2 минуты.

Кстати, если вы захотите напечатать еще и текст то для этого вам понадобится процедура Writeln ей нужно передать строку, и вызвать между Rewrite и CloseFile.

Да, второй прикол куда короче первого, но надеюсь, вам он понравился.

Прикол третий.
Клавиатура и мышь- лучший объект для шуток! Сейчас кто-то подумает что мол вот опять будем двигать мышку или останавливать ее на одном месте! Нет я буду кликать мышкой и «нажимать» на клавиши клавиатуры. Для этого я воспользуюсь функциями Mouse_event и Keybd_event. Первая нужна для щелчка мышью а вторая для нажатия на клавишу. Кодить будем на WinApi поэтому сразу удаляем форму и открываем сорник проекта, и вставляем туда следующий код:


program Project1;

uses
Windows;

procedure MoveMouse(Nomber: Integer); // процедура для активации прикола
begin
case Nomber of
0: begin// щелкаем мышью
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(1000);
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
end;
1: begin // нажимаем Enter на клавиатуре
keybd_event(VK_RETURN, 0, 0, 0);
end;
2: begin // выводим сообщение о ошибке
MessageBox(0, 'Error in mouse and keyboard driver', 'Error', MB_OK);
end;
end;
end;

begin
While true do
begin
Sleep(10000); //ждем 10 секунд
MoveMouse(Random(3));// вызываем прикол
end;
end.


Итак что здесь происходит?(я уже третий раз пишу эту фразу =)) В самом начале я создал процедуру, которая будет генерировать щелчок мыши, нажатие на Enter или выводить сообщение об «ошибке». Давайте разберем ее по подробнее. Здесь процедура mouse_event генерирует событие для мыши ей надо передать аж 5 параметров, первый это флаги, флагов много я покажу только несколько из них:

1: MOUSEEVENTF_ABSOLUTE- обязательный флаг без него ничего не работает, указывает на движение мыши относительно абсолютных координат(может это звучит как то странно, но я сам до конца не понял что это значит)
2: MOUSEEVENTF_LEFTDOWN- нажать на левую клавишу
3: MOUSEEVENTF_LEFTUP- отпустить левую клавишу.
4: MOUSEEVENTF_RIGHTDOWN- нажать на правую клавишу.
5: MOUSEEVENTF_RIGHTUP- отпустить правую клавишу.

Остальные параметры нам не интересны (там все равно нули), но постараюсь рассказать и о них. Второй и третий это флаги указывающие на новую позицию мыши(работает только если указан флаг MOUSEEVENTF_MOVE, но работает странно лично я так и не понял относительно чего там все движется поэтому с целью движения мыши лучше использовать старый добрый SetCursorPos) третий и четвертый флаги это доп инфа ее смысл меняется в зависимости от указанных флагов. Ну и keybd_event это процедура, которая генерирует событие для клавиатуры у нее 4 параметра первый это клавиша на которую надо нажать остальные флаги смысл которых понять я так и не смог, но главное что их значение может быть равным нулю. Ну с выводом сообщения об ошибке ты разберешься сам.

Всё все три прикола написаны, надеюсь ты найдешь им достойное применение!
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Вы читаете: Статьи » Программирование » Delphi » Три прикола в Дельфи!
Статьи по теме:
  • Работаем с рабочим столом
  • Работаем с рабочим столом
  • Создание заставок для ваших программ
  • Delphi и Flash. Совмещение несовместимого!
  • Delphi и Flash. Совмещение несовместимого!
  •  (голосов: 2)
    Просмотров: 3177 :: Комментарии: (0) :: :: Напечатать

    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
     
    Design by PODPOLE