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

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

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

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


Кодинг

Для начала добавим в программу автозагрузку. Наш органайзер должен запускаться вместе с виндами и делать свое дело, а не дожидаться милости пользователя. Нам сгодится любой способ: через RUN реестра, автозагрузку, win.ini. Мы воспользуемся последним способом. Для этого в OnCreate формы занесем следующее:

Добавляем себя в win.ini

var win: TIniFile;

pres: string;

begin

Win:= TIniFile.Create('win.ini'); //Поглядим в win.ini

Win.ReadString ('windows', 'run', pres); //Почитаем, чего там в RUN

IF pres<> application.ExeName then win.WriteString('windows', 'run', application.ExeName);

//Ах, не мы?? Теперь мы :)

Win.Free; //Сохраняем

Эти строчки кода наверняка напомнят тебе старые добрые времена, когда еще существовал Win3x, да и молодежь была не та, что нынче :). Собственно, из-за этой самой ностальгии я и не стал использовать реестр. Так веселее – в Win9X сохранилась возможность автозапуска через win.ini, а WinXP ее вообще без лишних слов преобразует в реестр. Win.ini же останется девственно чистой. Кстати, для работы этого кода тебе понадобится подключить inifiles - uses inifiles.

Как я уже говорил, основой нашей программы станет XML таблица. Как с ней работать, я рассказывал еще в июльском номере («Тест для большого дяди – на все 100»), однако кратко напомню последовательность действий:

1. Зарегистрируй midas.dll (Пуск -> выполнить -> regsvr32 midas.dll).

2. Положи на форму компоненты DataSource1 и ClientDataSet1, свяжи их со свойством DataSet компонента DataSource1.

3. Свойство FieldDefs (ClientDataSet1) определяет нужные поля. Создавай: key1 (ключевое поле, тип AutoInc), EventName (имя или тип события, потом можно сделать список из «дней варенья», «дней стакана» и пр., тип String), DateTime – в нем будет храниться дата и время активизации события; тип – TDateTime, хотя можно и String, т.к. есть функция StrToDateTime ;)), EventText – текст события. Например, «Сдавай статью или умри». Тип – Memo. Поле ProgPath будет определять путь к программе, необходимой для запуска (например, почтовик). Тип – string. Размер чем больше, тем лучше. Сами пути бывают разные. Url и Sound будут, соответственно, содержать урл для открытия и звук, который разбудит заснувшего на клавиатуре пользователя.

Вот что еще необходимо добавить. XML-таблицы ведут подробные логи изменений (ты всегда сможешь сделать откат), но нам лучше поставить свойство LogChanges в False и не захламлять диск лишними данными. Иначе на винте у юзера будут собираться напоминания о делах давно минувших дней.

Сам интерфейс проги я сделал из 4 CheckBox’ов, 3 DBEdit, 1 DBMemo, 1 MaskEdit (для ввода времени), 1 Tcalendar, 3 кнопок, 2 Tlabel и одного компонента CoolTrayIcon (о нем чуть позже). Получившийся результат смотри на скриншоте.

Все это хозяйство я снабдил следующими атрибутами:

Label1 – свойство caption – «Что изволите?»

Label2 – свойство caption – «Когда изволите?»

Checkbox1 – свойство caption – «Запустить программу: »

Checkbox2 – свойство caption – «Открыть УРЛ: »

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