Sep 17

Пишем программу для розыгрыша на Делфи. Часть 1

День смеха давно прошел а ко дню программиста еще так далеко. Но посмеяться над чайниками снова хочется , поэтому предлагаю ввести еще один праздник : День чайника. А что, летом многие люди идут в отпуск ... и вместо того чтобы пойти с друзьями пить пиво или еще что-то они сидят и ГЕЙМЛЯТЬСЯ . От этого нужно отучать . Как ? Просто попросить компьютер напомнить чайнике ( или геймеру ) о друзьях .
Специально для этого мы напишем программу которая сделает все за нас .
Писать будем на Delphi (у меня 10, но подойдет и любая другая ) . Коротко о функционале :
Сначала программа сворачивает все окна , чтобы FallOut не мешал нашим планам . Далее она заблокирует устройства ввода ( клаву и мышь ) для более шокировать жертву. После чего напишет на экране какую-то фразу ( например «Хватит геймится , иди пива попей !") . Подождет несколько секунд и вернет компьютер в нормальный режим , на 10 минут .
И так приступим . Запускаем Делфи , New - > Console application . Почему консоль ? Это избавит нас таких проблем как сокрытия формы сокрытия кнопки на панели задач , и значительно уменьшит размер программы . В коде сразу стираем строку
{$ APPTYPE CONSOLE }
. Наша программа сразу становится невидимой . Теперь приступим к написанию кода :
Прежде всего мы включим в проект следующие библиотеки:
uses
SysUtils , Windows , Messages , Classes , Forms , Graphics ;

1 . Свернуть окна . Для этого нужна функция:
function enumminiproc ( wd : hwnd ; param : longint ) : boolean ;
stdcall ;
/ / Обязательно stdcall !
begin
if wd < > application.handle then / / Если это не наша программа
if iswindowvisible ( wd ) then / / если окно видимое
if not isiconic ( wd ) then / / если оно не свернуто
if iswindow ( wd ) then / / и это вообще окно
showwindow ( wd , sw_minimize )
/ / Сворачиваем
result : = true ;
/ / Продолжаем перебирать окна
end ;

Теперь в основном коде введем :
while true do / / true всегда true , поэтому цикл будет работать без остановки .
begin
enumwindows ( @ enumminiproc 0 ) / / обработаем все открытые окна передав в функцию хендл окна .
end ;


Поделитесь вашими мыслями



Ссылки в комментариях будут свободны от nofollow.

Поддерживаемые теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

Ссылки в комментариях будут свободны от nofollow.