вторник, 3 ноября 2009 г.

Фоновое приложение Windows

В прошлом посте я рассказывал о различных типах проектов Windows. Здесь я расскажу о создании фонового приложения, которое не имеет интерфейса (т.е. невидимо), но может выполнять различные действия.

Войдите в HiAsm и выполните Файл - Новый - Фоновое приложение Windows. Главный компонент здесь не MainForm, а Service, но точек и параметров у него немного. Оно также может иметь свою иконку, поэтому у него есть параметр Icon.

Фоновое приложение обычно выполняет какие-то действия и завершается. Если нужно, чтобы приложение постоянно было в памяти и завершалось только принудительно, то нужно установить параметр Wait=True. Тогда для выхода из приложения нужно использовать метод doDtop компонента Service.

У компонента также есть пара событий: после запуска и перед выходом из приложения.

В этот проекто невозможно поставить визуальные компоненты, а также те, которые для работы требуют окно программы (или используют функции, его требующие). Зато можно вставить компонент Message, и тогда пользователь сможет видеть ход работы программы. Впрочем, часто в этом нет необходимости.

Мы будем делать программу, которая проверяет, сколько места осталось на жёстком диске, и выдавать предупреждающие сообщения, когда остаётся менее 5%. Для получения параметров диска нам нужен компонент HardDisk со вкладки "Система". А остальное - математика.

Скачать схему HiAsm

У приложения Wait=True, и приложение никогда не завершается. Вы можете сами придумать, по какому событию завершать приложение. В приложении работает таймер, который кажду секунду производит проверку и выдаёт сообщение, если нужно.

А сейчас сделаем приложение, которое будет выполнять действия и завершаться. Сделаем, например, программу для уменьшения размеров рисунков вдвое. Никакого интерфейса, естественно, не нужно.

Скачать схему HiAsm

Параметр Wait=False. При входе происходит перебор параметров (это имена кинутых на иконку программы файлов). Компонент PictureStream загружает картинку, и она остаётся в компоненте Bitmap. А второе событие разветвителя запускает чистую математику. Изменённая картинка передаётся в потоке. После всех действия программа завершается.

Когда целесообразно использовать фоновые приложения? Очевидно, в том случае, когда никакого взаимодействия с пользователем не нужно. Конечно, программа для работы с картинками должна иметь настраиваемые параметры, поэтому вряд ли разумно делать её фоновой. Но если же вы делаете её только для себя (например, вам нужно уменьшить 500 картинок), то это вполне оправданно.




Хотите стать актёром или сняться в рекламе? Попробуйте себя на кастинге! www.lica.by - это база актёров, в которую любой человек может добавить себя независимо от внешности!

Нужно скрепить конструкцию? Вам обязательно понадобится гайка шестигранная din 934. Множество гаек с отличными показателями.

3 комментария:

  1. Хорошо бы еще рассказать, как закрывать фоновые задачи, - а то запустишь и потом не отвяжешься... ;0) Разве что убивать процессы в Диспетчере задач Windows.
    Вопрос-напоминание. Вы обещали рассказать о менеджерах...

    ОтветитьУдалить
  2. Про вырубание процессов я писал в статье о процессах. Это может пригодиться, если нужно завершить процесс из другого приложения.

    ОтветитьУдалить
  3. Правда, про вырубание-то я как раз и не писал... Используйте точку doKill у компонента EnumProcesses, а на верхнюю точку нужно передать ижентификатор найденного процесса с нижней точки.

    ОтветитьУдалить