ЖУРНАЛ ХАКЕР

Delphi. Центр управления полетами кнопки "Пуск"

Xakep, номер #033, стр. 033-060-2


В принципе, прога готова, и ее можно запускать. Но если ты сделаешь это, то она засветится в TaskBar, что абсолютно недопустимо для проги-прикола. Давай напишем код, который спрячет наше приложение от грозного глаза Taskbar. Для этого выбери пункт меню View Source из меню Project.

Перед тобой появится исходник самого проекта. Сравни его с листингом 3 и нужное допиши. Чтобы тебе было проще, изменения произошли там, где есть комментарии.

Он сказал "поехали" и махнул рукой

Все. Играйся на здоровье. Только будь осторожен. Слабонервные ламеры при виде летающей кнопки могут уйти в бессознательное состояние на пару десятков лет. Нашатырь тут уже не поможет. Так что за побочные действия отвечать будешь сам.

Исходники примера ты можешь найти у меня на странице www.x-c-r.com.

ХХХХ Листинг 1 ХХХХ

procedure TForm1.FormShow(Sender: TObject);

begin

Width:=51;//Установить ширину окна

Height:=21;//Установить высоту

Left:=-100;//Убрать окно за левую границу экрана.

end;

ХХХХ Листинг 2 ХХХХ

procedure TForm1.Timer1Timer(Sender: TObject);

var

i:Integer;

h:THandle;

begin

//Сделать окно видимым.

Visible:=true;

//Установить верхнюю позицию окна в левый нижний угол экрана.

Top:=Screen.Height-Height;

Left:=1;

//Создаю пустой указатель h, который буду использовать для задержки.

h:=CreateEvent(nil, true,false, 'et');

//Сейчас будем подымать кнопку

// От 1 до 80 выполнять действия от begin до end

for i:=1 to 80 do

begin

//Увеличить значение верхней позиции окна с кнопкой.

Top:=Screen.Height-Height-i*5;

Repaint; //Перерисовать окно

WaitForSingleObject(h,15);//Задержка в 5 миллисекунд.

end;

//Дальше идет опускание кнопки. Алгоритм тот же,

//просто выполнение идет в обратном порядке

for i:=80 downto 1 do

begin

Top:=Screen.Height-Height-i*5;

Repaint;

WaitForSingleObject(h,15);

end;

//Уничтожаю указатель h

Closehandle(h);

//Прячу окно.

Visible:=false;

end;

ХХХХ Листинг 3 ХХХХ

program Project1;

uses

Forms,

Windows,// Это я добавил модуль Windows

Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

//Далее я добавил новую переменную

var EStyle : integer;

begin

Application.Initialize;

//Далее идет установка невидимости приложения

EStyle:=GetWindowLong(application.Handle, GWL_EXSTYLE);

SetWindowLong(Application.Handle, GWL_EXSTYLE,

EStyle or WS_EX_TOOLWINDOW);

//Остальное не менять

Application.CreateForm(TForm1, Form1);

Application.Run;

Назад на стр. 033-060-1  Содержание  Вперед на стр. 033-060-3