Sep 17

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

4 . Теперь нужно чтобы пользователь прочитал послание . Для этого установим в программе паузу. Можно было бы просто поставить sleep ( 30000 ) , но мы поступим иначе , ведь нам нужно именно в этот момент контролировать блокировки ввода . Поэтому мы вставим еще один цикл. Он будет вызывать функцию BlockInput ( True ) через некоторое время. Какой ? Мы сейчас вычислим :
Скажем никто не успеет выполнить какие-то действия за 30 мс. Так что при паузе 30 мс нам нужно выполнить 30000 /30 циклов есть 1000. Получаем такой цикл :
for I : = 0 to 1000 do

Забывает объявить переменную I. Не станем пренебрегать старыми традициями и объявим ее после раздела uses но до объявления функций :
var i : integer ;

Конечно BlockInput ( True ) Выполняется быстрее 30 мс , поэтому нам нужно затормозить цикл:

begin
BlockInput ( True ) ;
sleep ( 30);
end ;

5 . Программа сделала все что нужно , теперь осталось вернуть все как было ... Для начала восстановим все окна . Здесь нам нужна функция обратная enumminiproc :
function enumrestproc ( wd : hwnd ; param : longint ) : boolean ;
stdcall ;
begin
if wd < > application.handle then
if iswindowvisible ( wd ) then
if isiconic ( wd ) then
if iswindow ( wd ) then
showwindow ( wd , sw_restore )
result : = true ;
end ;

Используем ее так же :
enumwindows ( @ enumrestproc 0 )

Конечно так как было уже не будет , так как окна будут восстановлены даже если геймер их свернул перед запуском , а на верхнем плане окажется совсем другая программа (возможно , это не предусмотришь ) .
Ну и под конец восстановим управления:
BlockInput ( False ) ;

В принципе программа готова , но у нее один недостаток : она сразу дает о себе знать. Если запускать ее вместе с системой то нужно дать чайнике время на разогрев . Для этого перед « вечным» циклом нужно сделать паузу . И еще одно , назовите файл svchost.exe или еще как-то , потому у пользователя останется время на то, чтобы вырубить прогу .
Вот и все. Программу можно обвешивать наворотами , но не стоит делать из нее вируса.
P.S. Показанные здесь приемы можно использовать в более полезных целях . Эта программа служит только как демонстрация некоторых возможностей .


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



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

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

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