
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;