Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #62, ФЕВРАЛЬ 2004 г.

Жизнь по плану

Лозовский Александр

Xakep, номер #062, стр. 062-114-4


Крутая иконка в трей

Теперь немного о компоненте CoolTrayIcon. Это абсолютно фриварное чудо ты можешь взять с www3.brinkster.com/troels/delphi.asp или с нашего диска. CoolTrayIcon позволяет создавать иконки в трее с очень широкими возможностями. Включая анимацию, смену иконок и свои методы для скрытия/показа формы. Кстати, этот компонент включает в себя также и собственный таймер, съедающий ресурсов меньше, чем стандартный. Как им пользоваться, ты можешь прочесть в документации. Частью этих функций мы воспользуемся в кнопке «свернуть» - это две простые строчки:

Application.Minimize;

CoolTrayIcon1.HideMainForm;

После нажатия кнопки программа торжественно улетит к часикам и больше не будет мозолить глаза на панели задач.

Конец задания

То, что мы сейчас написали – это очень сырой вариант шедулера. В принципе, проги такого типа очень нужны и в нелегком Х-деле – даже отправку паролей по почте иногда надо запланировать. Насчет иконок я тоже высказался не зря. Меня иногда спрашивают, как легче всего обойти антивирус или файрвол. Так вот, проще всего их не обходить, а заражать (об этом я писал в Спеце «ВИРУСЫ», статья «High Level Code») или убивать. А на место убитой проги ставить свое фейк-творение, поскольку редкий юзер интересуется их логами. Им обычно достаточно обнадеживающей иконки в виде паучка или доктора ;).

Событие OnTimer

procedure TForm1.Timer1Timer(Sender: TObject);

var NowDate, BDate: string;

begin

ClientDataSet1.First;

While not ClientDataSet1.Eof do

begin

NowDate:= DateTimeToStr(now);

BDate:= DateTimeToStr(ClientDataSet1.FieldByName('DateTime').AsDateTime);

Delete (NowDate, length(NowDate)-2, 2);

Delete (BDate, length(bdate)-2, 2);

IF NowDate = Bdate then

begin

IF DBEdit3.Text<>'' then PlaySound (PCHar(DBEdit3.Text), SND_ASYNC, SND_NOWAIT);

IF DBEdit1.Text<>'' then WinExec (PCHar(DBEdit1.text),0); // PCHar не используй

form2.Memo1.Lines:= DBMemo1.Lines;

ClientDataSet1.Delete;

Form2.ShowModal;

end;

application.ProcessMessages;

end;

Полезные качества CoolTrayIcon

Icon – путь к иконке, которая будет светиться в трее.

Hint – короткая строка (128 символов), отображающаяся при наведении мышки.

PopupMenu – какое Popup использовать. Для этого ты должен сначала его создать ;).

Leftpopup – какое всплывающее меню будет использовано для левой кнопки.

CycleIcons – циклировать ли иконки из IconList. По умолчанию – FALSE. Если ты хочешь менять иконки, то поставь IconList и свяжи его с компонентом (свойство IconList).

MinimizeToTray – сворачивает прогу в трей без предварительной минимизации.

ShowBalloonHint - показывает хинт. Ей необходимо передать: Title – заголовок хинта, Text – текст, IconType – тип иконки (на моем скрине - bitInfo), TimeoutSecs – время существования. В общем, постарайся, и твоя зло-прога ни в чем не будет уступать невинно убиенному ей антивирусу ;). Обратная функция – CloseBalloonHint.

CD

На диске расположился полноценный вариант шедулера. Также там лежит компонент CoolTrayIcon. Как я говорил в статье, этот компонент поможет тебе работать с треем.

INFO

Помни об интерфейсе, как бы банально это ни звучало. Обдумай его заранее и обсуди с народом - будет ли им это удобно? 80% прог не получают нужной популярности именно из-за кривого фейса, а вовсе не из-за кода ;).

Назад на стр. 062-114-3  Содержание