Faq запуск текущего хранителя экрана


Содержание

Faq запуск текущего хранителя экрана

Всем привет! Кто-нибудь знает, как из своей программы можно определить, что Windows запустила (или пытается запустить) ScreenSaver, а также, что ScreenSaver завершил свою работу?

В win2k/winXp через gina.dll неплохой способ. Описан вроде на rsdn.

В Win98 можно попробовать узнать через SystemParametersInfo (SPI_SCREENSAVERRUNNING, . )

Делаю так:

var
SaverActive:boolean;
begin
repeat
Application.ProcessMessages;
( SPI_SCREENSAVERRUNNING, 0, @SaverActive, 0 ) Делаю так:

var
SaverActive:boolean;
begin
repeat
Application.ProcessMessages;
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @SaverActive, 0);
until SaverActive=True;
Halt;
end;

и цикл не завершается, даже если хранитель экрана запустился. Может что не так сделал?

Конечно не так, если не ошибаюсь нужно писать SPI_GETSCREENSAVEACTIVE, а SPI_SCREENSAVERRUNNING
используется для того чтобы активировать этот режим.
Посмотри SDK.

SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, nil, 0); — В 98 Windows»е отключает нажатие Ctrl+Alt+Del, At+Tab, Alt+Esc.

SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, nil, 0); — включает нажатие вышеуказанных сочетаний.
А как про заставку узнать я не знаю
PindosInc®

Да уж. :))

SendMessage(Application.Handle,WM_SYSCOMMAND,SC_SCREENSAVE,0);

2Echelon © (01.08.03 18:03)
SPI_GETSCREENSAVEACTIVE тоже не помог.

2Pindos © (02.08.03 01:25)
Кнопки мне не нужны :-)

2Yanis © (02.08.03 02:34)
Это немножко не то ;-)

Faq запуск текущего хранителя экрана

Железных Дел Мастер

Сообщения: 23447
Благодарности: 4238

Конфигурация компьютера
Материнская плата: Asrock (AB350 Pro4)
HDD: Toshiba SSD 256Gb (THNSNH256GBST); WD HDD 1Tb (WD10EARS-00Y5B1); TOSHIBA 2Tb (MK2002TSKB); Samsung Portable 500GB (MU-PA500B/WW)
Блок питания: Seasonic 550W Gold (SSR-550RT)
Монитор: Dell 24″ (2408WFP)
ОС: Win8x64ENT
Прочее: APC Back-UPS RS 1000 || Logitech MK270|| Logitech c310|| Mikrotik 952Ui-5ac2nD || Creative Inspire 5.1 Digitall 5700 || LG 47LM580T

——-
[FAQ] Как определить аппаратную конфигурацию компьютера и правильно задать вопрос
——-
В благодарность за помощь нажимаем ссылочку «Полезное сообщение» внизу этого самого сообщения (подробнее). Помните: админ конфеты НЕ ПЬЁТ ;)
——-
Говори, что думаешь и думай, что говоришь! (c) || Мой : Подарите мне сервак, подарите!

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

Сообщения: 23
Благодарности:

——-
Tantum possumus, quantum scimus

Сообщения: 644
Благодарности: 47


Знать бы какие функции.

——-
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций

Это сообщение посчитали полезным следующие участники:

Железных Дел Мастер

Сообщения: 23447
Благодарности: 4238

Конфигурация компьютера
Материнская плата: Asrock (AB350 Pro4)
HDD: Toshiba SSD 256Gb (THNSNH256GBST); WD HDD 1Tb (WD10EARS-00Y5B1); TOSHIBA 2Tb (MK2002TSKB); Samsung Portable 500GB (MU-PA500B/WW)
Блок питания: Seasonic 550W Gold (SSR-550RT)
Монитор: Dell 24″ (2408WFP)
ОС: Win8x64ENT
Прочее: APC Back-UPS RS 1000 || Logitech MK270|| Logitech c310|| Mikrotik 952Ui-5ac2nD || Creative Inspire 5.1 Digitall 5700 || LG 47LM580T

——-
[FAQ] Как определить аппаратную конфигурацию компьютера и правильно задать вопрос
——-
В благодарность за помощь нажимаем ссылочку «Полезное сообщение» внизу этого самого сообщения (подробнее). Помните: админ конфеты НЕ ПЬЁТ ;)
——-
Говори, что думаешь и думай, что говоришь! (c) || Мой : Подарите мне сервак, подарите!

Сообщения: 23
Благодарности:

——-
Tantum possumus, quantum scimus

Lubuntu.ru

Русскоязычное сообщество Lubuntu Linux

  • Темы без ответов
  • Активные темы
  • Поиск

[решено] XScreenSaver: как автоматически запускать демон

[решено] XScreenSaver: как автоматически запускать демон

Сообщение Jeffrey » 15 ноя 2013, 11:21

XScreenSaver в систему Lubuntu 13.10 (64-bit) установлен и настроен. Однако, при каждом перезапуске системы и запуске настройки его параметров выдаётся сообщение, что «демон XScreenSaver для экрана 0 не запущен, запустить?». Я отвечаю утвердительно, но это до следующего перезапуска.

Вопрос: где его прописать, чтобы демон XScreenSaver для экрана 0 стартовал автоматически?

Зачем это нужно . Выключается экран. Даже Caffeine не держит


Данные . Вхожу в систему, ничего (и никого) не трогаю.

Меню — Параметры — Default applications for LX session — Группа с названием Screensaver — в выпадающем меню выбираем установленный нами ранее XScreenSaver и жмём Apply — Перезагружаемся

Вывод. Caffeine поставил зря, никаких сценариев не требуется и ничего никуда прописывать и класть не надо. Нужно только установить XScreenSaver, настроить его и вкладку «Расширенные» (питание монитора) и включить автозапуск демона XScreenSaver в приложении «Default applications for LX session». Вот и всё!

Команда screen Linux

Эффективность администрирования систем GNU/Linux напрямую зависит от используемых утилит. Возможность выполнять максимум задач в минимальный срок — приоритетная цель этого процесса. Команда screen Linux является одним из основных инструментов системного администратора.

По умолчанию screen не является стандартной утилитой в большинстве дистрибутивов, но работает везде одинаково. Поэтому сначала рассмотрим её инсталляцию, а затем — возможности и основные команды.

Установка утилиты screen

Разница в инсталляции программы на разных дистрибутивах заключается в программах управления пакетами и их командами.

Чтобы установить screen в Ubuntu, Linux Mint, Deepin и других систем семейства Debian, используйте команду apt:

sudo apt install screen

В Manjaro, Antergos и других Arch-подобных ОС screen располагается в AUR, поэтому используйте соответствующую программу управления пакетами, например aurman:

aurman -S screen

Для инсталляции screen в системах на основе Red Hat (например Fedora и CentOS) используйте утилиту dnf:

dnf install screen

Основы работы команды screen

Принцип работы GNU/Linux в целом заключается в использовании небольших утилит, которые делают что-то одно, но хорошо. И эта программа — не исключение.

Команда screen Linux является консольной программой и имеет однозначное определение, соответствующее названию, — это оконный менеджер, разделяющий один физический терминал между несколькими процессами. Подходит для прямого либо удалённого администрирования.

Возможности программы

Screen позволяет переключаться между терминалами, в которых выполняются процессы, не прерывая их. Это особенно эффективно, когда необходимо производить сборку/установку ПО и мониторить дисковое пространство или использовать аппаратные ресурсы.

Screen может разделять текущий терминал на меньшее количество окон с возможностью запуска в них того же или других терминалов. Это ещё больше упрощает вышеописанную задачу, особенно при использовании больших мониторов.

Также к одной сессии screen может подключаться несколько пользователей. Это эффективно при обучении персонала.


Основные команды screen

Откройте терминал. Для запуска первого окна наберите:—

Создастся новая сессия программы и появится приветственное сообщение. Для его закрытия нужно нажать Space или Enter.

Все управляющие команды начинаются с комбинации клавиш Ctrl + a, затем следует буква или сочетание клавиш. Буквы разных регистров выполняют разные команды. Также сочетания можно заменять текстом. Для его ввода нажмите Ctrl + a и :, после чего вводите текст.

Например, чтобы создать новое окно, нажмите по очереди сочетание Ctrl + a и затем c. Для просмотра списка созданных окон нажмите Ctrl + a и w.

Для перехода в любое из созданных окон сессии используется комбинация Ctrl + a и номер, который за ним закреплён, или Ctrl + a и «, после чего нужно выбрать стрелками необходимое. Для последовательного перехода используйте Ctrl + a и n (следующее окно) или p (предыдущее окно).

Чтобы разделить экран по горизонтали, нажмите Ctrl + a и S. Например, для разделения окна по горизонтали напишите split.

Будет создано новое окно снизу от текущего, и оно не становится активным. Чтобы разделить по вертикали, нажмите Ctrl + a и | (или введите split -v).

Были созданы новые пустые окна. Для переключения между ними используйте Ctrl + a и Tab (или напишите focus). Положение курсора указывает, какое окно является активным в данный момент. Для скрытия окна используйте Ctrl + a и X (или введите remove).

Чтобы запустить в новом окне терминал, нажмите Ctr + a и c (или наберите screen).

Чтобы скрыть все окна и оставить только текущее, используйте Ctrl + a и Q (или напишите only).

Переименовать окно можно с помощью Ctrl + a и A. Внизу появится строка с возможностью заменить старое название.

Чтобы скрыть все окна сессии, нажмите Ctrl + a и \. Подтвердите решение нажатием y. Для выхода из менеджера окон нажмите Ctrl + a и d.

Команда screen обладает большим набором горячих клавиш. Полный их список можно посмотреть с помощью Ctrl + a и ?.

При создании новой сессии screen можно задать ей имя. Таким образом можно создать несколько сессий. Чтобы сделать это, используйте параметр -S, после которого укажите название.

screen -S name-of-screen

Посмотреть список запущенных сессий можно командой

Строка, идентифицирующая сессию, состоит из нескольких полей: id, название и статус.

Значение id отображается в списке всех запущенных процессов. Это означает, что его можно завершить с помощью команды kill. Завершить работу текущего окна можно с помощью комбинации Ctrl+a и k; подтвердите решение нажатием y.

Статус может иметь два состояния: Attached (задействован) и Detached (незадействован). Второе состояние у сессий, в которых ещё не происходили никакие процессы.

Чтобы перейти в нужную сессию, следует указать параметру -r её id или название.

Это всё основные команды screen Linux.


Как пользоваться screen Linux

Теперь давайте рассмотрим, как пользоваться screen Linux более подробно.

Пример 1. Необходимо отслеживать изменения файла в реальном времени. Для этого в одном окне будем вносить изменения в новый файл, а в другом ­— отображать файл командой tail с опцией -f:

При стирании содержимого показывается сообщение, что файл усечён, при этом этот текст в него, конечно, не записывается.

Пример 2. Необходимо отслеживать размер каталога в реальном времени. В одном окне записываем данные, в другом — отображаем, как изменяется размер домашнего каталога командой watch с задержкой в две секунды.

Выводы

Команда screen является эффективным инструментом для системного администрирования, особенно при работе с системой без среды рабочего стола. Имея один терминал, вы можете создавать несколько окон для обработки параллельных процессов без конфликтов между ними.

Faq запуск текущего хранителя экрана

Здесь собраны ответы на наиболее популярные вопросы из разряда «как это сделать», которые лучше всего иллистрируют возможности программы BDV SystemEvents.

Вопрос: как запустить программу вместо скринсейвера?
Ответ: выберите действие «Run application». В поле «Application» можно задать программу вместе с параметрами, а можно вообще любой набор команд или даже батч-файл. Выберите условие «Idle» (Keyboard and mouse).
Результат: при неактивности пользователя в течение указанного промежутка времени запустится указанное приложение (выполнится команда).

Вопрос: как сделать, чтобы программа автоматически перезапускалась, например, после аварийного завершения?
Ответ: выберите действие «Run application» и условие «Application» с параметром «When specified application NOT running». В обоих случаях в качестве приложения укажите программу, которую нужно перезапускать.
Результат: если указанный процесс завершится по любой причине, он автоматически будет запущен опять.

Вопрос: как автоматически выключить компьютер, когда им не пользуются длительное время?
Ответ: выберите действие «Shut Down» с нужным параметром (Log out current user/Power off computer/Restart computer). Можно установить галочку «Force», чтобы компьютер выключился даже если будут зависшие программы или программы с несохраненными данными. Выберите условие «Idle».
Результат: при неактивности пользователя в течение указанного промежутка времени компьютер автоматически выключится (или, в зависимости от выбранных параметров, перезагрузится/завершит работу текущего пользователя).

Вопрос: как заменить стандартный движок хранителя экрана Windows?
Ответ: выберите действие «Run Screen Saver». В поле «Screen Saver» укажите нужную заставку. Выберите условие «Idle» (Keyboard and mouse) и желаемый таймаут.
Результат: при неактивности пользователя в течение указанного промежутка времени запустится указанный скринсейвер, при этом стандартный движок хранителя экрана не будет задействован.

Вопрос: как запретить запуск определенной программы?
Ответ: выберите действие «Run application», в поле «Application» напишите «taskkill /IM notepad.exe». Выберите условие «Application» с параметром «When specified application running», в качестве «Application» укажите ту же программу «notepad.exe».
Результат: при попытке запустить Блокнот он будет автоматически закрываться.

Вопрос: как автоматически выключить компьютер после завершения определенного процесса?
Ответ: выберите действие «Shut Down» с нужным параметром (Log out current user/Power off computer/Restart computer). Можно установить галочку «Force», чтобы компьютер выключился даже если будут зависшие программы или программы с несохраненными данными. Выберите условие «When specified application NOT running» и укажите программу, при завершении которой нужно выключить компьютер.
Результат: когда программа закроется, компьютер автоматически выключится (или, в зависимости от выбранных параметров, перезагрузится/завершит работу текущего пользователя).

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

Френды могут получить регистрацию бесплатно. Любой желающий может получить регистрацию бесплатно, плодотворно поучаствовав в бета-тестировании (найдя ошибку или посоветовав что-то дельное).

Создание хранителя экрана (ScreenSaver)

Главное о чем стоит упомянуть это, что ваш хранитель экрана будет работать в фоновом режиме и он не должен мешать работе других запущенных программ. Поэтому сам хранитель должен быть как можно меньшего объема. Для уменьшения объема файла в описанной ниже программе не используется визуальные компоненты Delphi, включение хотя бы одного из них приведет к увеличению размера файла свыше 200кб, а так, описанная ниже программа, имеет размер всего 20Кб!

Технически, хранитель экрана является нормальным EXE файлом (с расширением .SCR), который управляется через командные параметры строки. Например, если пользователь хочет изменить параметры вашего хранителя, Windows выполняет его с параметром «-c» в командной строке. Поэтому начать создание вашего хранителя экрана следует с создания примерно следующей функции:

Поскольку нам нужно создавать небольшое окно предварительного просмотра и полноэкранное окно, их лучше объединить используя единственный класс окна. Следуя правилам хорошего тона, нам также нужно использовать многочисленные нити. Дело в том, что, во-первых, хранитель не должен переставать работать даже если что-то «тяжелое» случилось, и во-вторых, нам не нужно использовать таймер.

Процедура для запуска хранителя на полном экране приблизительно такова:


Во-первых, мы проинициализировали некоторые глобальные переменные (описанные далее), затем прячем курсор мыши и создаем окно хранителя экрана. Имейте в виду, что важно уведомлять Windows, что это — хранителя экрана через SystemParametersInfo (это выводит из строя Ctrl-Alt-Del чтобы нельзя было вернуться в Windows не введя пароль). Создание окна хранителя:

Теперь окна созданы используя вызовы API. Я удалил проверку ошибки, но обычно все проходит хорошо, особенно в этом типе приложения.

Теперь Вы можете погадать, как мы получим handle родительского окна предварительного просмотра? В действительности, это совсем просто: Windows просто передает handle в командной строке, когда это нужно. Таким образом:

Как Вы видите, window handle является вторым параметром (после «-p»).

Чтобы «выполнять» хранителя экрана — нам нужна нить. Это создается с вышеуказанным CreateThread. Процедура нити выглядит примерно так:

Нить просто заставляет обновляться изображения в нашем окне, спит на некоторое время, и обновляет изображения снова. А Windows будет посылать сообщение WM_PAINT на наше окно (не в нить!). Для того, чтобы оперировать этим сообщением, нам нужна процедура:

Если мышь перемещается, кнопка нажата, мы спрашиваем у пользователя пароль:

Это также демонстрирует использование Registry на уровне API. Также имейте в виду как мы динамически загружаем функции пароля, используюя LoadLibrary. Запомните тип функции? TVSSFunc ОПРЕДЕЛЕН как:

Теперь почти все готово, кроме диалога конфигурации. Это запросто:

Трудная часть -это создать диалоговый сценарий (запомните: мы не используем здесь Delphi-формы!). Я сделал это, используя 16-битовую Resource Workshop (остался еще от Turbo Pascal для Windows). Я сохранил файл как сценарий (текст), и скомпилированный это с BRCC32:

Почти также легко сделать диалоговое меню:

После того, как пользователь выбрал некоторые установочные параметры, нам нужно сохранить их.

Загружаем параметры так:

Легко? Нам также нужно позволить пользователю, установить пароль. Я честно не знаю почему это оставлено разработчику приложений! Тем не менее:

Мы динамически загружаем (недокументированную) библиотеку MPR.DLL, которая имеет функцию, чтобы установить пароль хранителя экрана, так что нам не нужно беспокоиться об этом. TPCPAFund определён как:

Не спрашивайте меня что за параметры B и C ! :-)

Теперь единственная вещь, которую нам нужно рассмотреть — самая странная часть: создание графики. Я не великий гуру графики, так что вы не увидите затеняющие многоугольники, вращающиеся в реальном времени. Я только сделал некоторые ящики.

И последнее — глобальные переменные:

Затем исходная программа проекта (.dpr). Красива, а!?

Ох, чуть не забыл! Если, Вы используете SysUtils в вашем проекте (например фуекцию StrToInt) вы получите EXE-файл больше чем обещанный в 20K :-) Если Вы хотите все же иметь 20K, надо как-то обойтись без SysUtils, например самому написать собственную StrToInt процедуру.

Если все же очень трудно обойтись без использования Delphi-форм, то можно поступить как в случае с вводом пароля: форму изменения параметров хранителя сохранить в виде DLL и динамически ее загружать при необходимости. Т.о. будет маленький и шустрый файл самого хранителя экрана и довеска DLL для конфигурирования и прочего (там объем и скорость уже не критичны).


Статья добавлена: 1 июня 2005

Зарегистрируйтесь/авторизируйтесь,
чтобы оценивать статьи.

Статьи, похожие по тематике

Для вставки ссылки на данную статью на другом сайте используйте следующий HTML-код:

Ссылка для форумов (BBCode):

Быстрая вставка ссылки на статью в сообщениях на сайте:
<> (буква a — латинская) — только адрес статьи (URL);
<<статья:12>> — полноценная HTML-ссылка на статью (текст ссылки — название статьи).

Поделитесь ссылкой в социальных сетях:

Комментарии читателей к данной статье

Пока нет комментариев к данной статье. Оставьте свой и он будет первым.

Оставлять комментарии к статьям могут только зарегистрированные пользователи.

Форум русскоязычного сообщества Ubuntu

Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

  • Форум русскоязычного сообщества Ubuntu »
  • Поддержка »
  • Рабочее окружение »
  • Unity (Модераторы: mahinist, Aleksandru) »
  • Установка хранителя экрана в Ubuntu

Автор Тема: Установка хранителя экрана в Ubuntu (Прочитано 79432 раз)

0 Пользователей и 1 Гость просматривают эту тему.


  • Форум русскоязычного сообщества Ubuntu »
  • Поддержка »
  • Рабочее окружение »
  • Unity (Модераторы: mahinist, Aleksandru) »
  • Установка хранителя экрана в Ubuntu

Страница сгенерирована за 0.093 секунд. Запросов: 24.

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Хранитель экрана

4.3. Преобразование приложения в хранитель экрана

Ну что ж, настало время подумать о преобразовании приложения в хранитель экрана. Как известно, любой хранитель экран должен автоматически завершать работу приложения при активности пользователя. Начнем с клавиатуры — нажатие любой клавиши клавиатуры должно немедленно завершать работу приложения (листинг 4.6).

Аналогичным образом приложение должно завершать работу при нажатии кнопки мыши или перемещении курсора мыши. Но здесь есть одна тонкость. Дело в том, что курсор мыши с высокой чувствительностью может реагировать даже на незначительные воздействия вроде микроколебаний стола из-за проезжающего за окном поезда. Поэтому во избежание непреднамеренных прерываний хранителя экрана мы будет завершать работу приложения только после того, как курсор отодвинется от первоначального положения в момент активации хранителя экрана на расстояние порядка 10 пикселей (листинг 4.7).

В процессе работы хранителя экрана некоторое приложение может вывести на экран диалоговое окно с важной информацией (например, Internet Explorer по окончанию загрузки файла). При этом окно хранителя экран теряет фокус, который переходит к новому диалоговому окну. Хранитель экрана, поверх которого отображается диалоговое окно, будет выглядеть, мягко говоря, несколько странно, поэтому в качестве одного из критериев завершения работы хранителя экрана логично использовать потерю фокуса формой (листинг 4.8).

Курсор мыши является чужеродным элементом для хранителя экрана, поэтому его необходимо скрыть посредством метода Hide класса Cursor :

Следующее отличие хранителя экрана от обычного приложения состоит в том, что он должен активироваться только при запуске приложения с ключом /s . Соответственно, мы должны добавить в метод Main статического класса Program анализ параметров командной строки (листинг 4.10).

Чтобы Visual Studio всегда запускала приложение с ключом /s , укажите этот параметр в поле Command line arguments вкладки Debug свойств проекта.

В заключении необходимо присвоить файлу хранителя экрана расширение . scr . Переименовывать файл вручную после каждой компиляции приложения довольно утомительно, поэтому мы автоматизируем этот процесс. Откройте в свойствах проекта вкладку Build Events и введите в поле Post-build event command line следующую команду (рисунок 4.3): copy «$(TargetFileName)» «*. scr » .

Теперь после каждой компиляции приложения будет вызываться команда copy, создающая копию exe-файла приложения с расширением . scr . Обратите внимание на получение имени exe-файла приложения посредством встроенного макроса $(TargetFileName) , благодаря чему команда copy не привязана к фиксированному exe -файлу.

Для проверки работоспособности хранителя экрана откройте каталог с . scr -файлом в файловом менеджере и вызовите его контекстное меню (рисунок 4.4). Как видно, контекстное меню любого исполняемого файла хранителя экрана содержит три пункта:

  1. Test — запускает хранитель экрана на выполнение с ключом /s .

  2. Configure (Настроить) — открывает окно конфигурации хранителя экрана.
  3. Install (Установить) — открывает вкладку Screen Saver диалогового окна Display Properties и выбирает данный хранитель экрана в качестве текущего.

Немного проигравшись с нашим хранителем экрана, вы заметите ряд недоделок. Например, при попытке открыть окно конфигурации ровным счетом нечего не происходит, а в окне предварительного просмотра (маленький «дисплейчик») диалогового окна Display Properties просто выводится изображение по умолчанию. А на компьютере с несколькими мониторами выяснится, что наш хранитель экрана активируется только основном мониторе. Что ж, работы нам предстоит еще много.

4.4. Поддержка нескольких мониторов

В настоящее время поддержка видеокартами двух мониторов уже стала нормой, поэтому любой уважающий себя разработчик должен позаботиться о корректном функционировании приложения на компьютере с несколькими мониторами. В частности, хранитель экрана должен показывать заставку на всех мониторах. Наиболее простое решение — просто отображать на всех мониторах одно и то же изображение. Так как наш хранитель экрана представляет собой форму, развернутую на весь экран, в случае нескольких мониторов мы можем просто создать несколько экземпляров формы — по одному на каждый монитор.

Начнем с метода Main . Информация об экранных координатах всех мониторов системы храниться в коллекции AllScreens класса Screen . Соответственно приложение должно просто перебрать элементы этой коллекции и использовать полученную информацию при создании форм (листинг 4.11).

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

Как запустить заставку экрана на компьютере Mac

Компьютер Mac можно настроить для вывода экранной заставки вручную или автоматически по истечении определенного периода неактивности.

Выбор заставки

На компьютере Mac предустановлено несколько экранных заставок, отображающих фотографии, сообщения, обложки из медиатеки iTunes или медиатеки фотографий и другие элементы.

  1. В меню Apple выберите пункт «Системные настройки» и щелкните «Рабочий стол и заставка».
  2. Откройте вкладку «Заставка». В левой части окна отображаются экранные заставки, а правая служит для предварительного просмотра выбранной заставки.
  3. Выделите экранную заставку щелчком мыши. Чтобы просмотреть заставку в полноэкранном режиме наведите указатель мыши на область предварительного просмотра и нажмите появившуюся кнопку «Просмотр».

Чтобы создать заставку в виде слайд-шоу, выберите один из вариантов слайд-шоу, например «Плавающие», «Отражения», «Оригами» или «Мозаика». Затем с помощью всплывающего меню «Источник» выберите собственные фотографии или одну из встроенных коллекций слайд-шоу.

Выбор времени и способа запуска экранной заставки

Во всплывающем меню «Запуск» выберите, по истечении какого периода неактивности компьютера Mac следует запускать заставку. Если запуск экранной заставки нежелателен, выберите «Никогда».

Кнопка «Активные углы» предоставляет варианты для запуска и остановки экранной заставки или перевода дисплея в режим сна наведением указателя на один из углов экрана. В раскрывающемся меню выберите вариант для определенного угла.

Запрос пароля после запуска экранной заставки

Чтобы настроить компьютер Mac на запрос пароля входа в систему для разблокирования экрана после запуска экранной заставки, выполните следующие действия.

  1. Выберите «Системные настройки» в меню Apple, затем щелкните «Защита и безопасность».
  2. Откройте вкладку «Общие».
  3. Установите параметр для запрашивания пароля после перехода в режим сна или запуска экранной заставки.


Отключение дисплея или его перевод в режим сна

При выводе заставки компьютер Mac использует ЦП, видеокарту и дисплей. В разделе настроек «Экономия энергии» можно выбрать продолжительность период неактивности компьютера Mac, по истечении которого дисплей будет отключаться или переходить в режим сна.

  1. Выберите «Системные настройки» в меню Apple, затем щелкните «Экономия энергии».
  2. Выберите время неактивности при помощи ползунка. Если для отключения дисплея задан меньший период неактивности, чем для запуска экранной заставки, заставка не будет запущена по истечении указанного периода.

Если используется ноутбук, такой как MacBook Pro, можно настроить разные периоды неактивности при работе от аккумулятора и от адаптера питания.

Информация о продуктах, произведенных не компанией Apple, или о независимых веб-сайтах, неподконтрольных и не тестируемых компанией Apple, не носит рекомендательного характера и не рекламируются компанией. Компания Apple не несет никакой ответственности за выбор, функциональность и использование веб-сайтов или продукции сторонних производителей. Компания Apple также не несет ответственности за точность или достоверность данных, размещенных на веб-сайтах сторонних производителей. Помните, что использование любых сведений или продуктов, размещенных в Интернете, сопровождается риском. За дополнительной информацией обращайтесь к поставщику. Другие названия компаний или продуктов могут быть товарными знаками соответствующих владельцев.

Создание хранителя экрана (ScreenSaver)

Главное о чем стоит упомянуть это, что ваш хранитель экрана будет работать в фоновом режиме и он не должен мешать работе других запущенных программ. Поэтому сам хранитель должен быть как можно меньшего объема. Для уменьшения объема файла в описанной ниже программе не используется визуальные компоненты Delphi, включение хотя бы одного из них приведет к увеличению размера файла свыше 200кб, а так, описанная ниже программа, имеет размер всего 20Кб!

Технически, хранитель экрана является нормальным EXE файлом (с расширением .SCR), который управляется через командные параметры строки. Например, если пользователь хочет изменить параметры вашего хранителя, Windows выполняет его с параметром «-c» в командной строке. Поэтому начать создание вашего хранителя экрана следует с создания примерно следующей функции:

Поскольку нам нужно создавать небольшое окно предварительного просмотра и полноэкранное окно, их лучше объединить используя единственный класс окна. Следуя правилам хорошего тона, нам также нужно использовать многочисленные нити. Дело в том, что, во-первых, хранитель не должен переставать работать даже если что-то «тяжелое» случилось, и во-вторых, нам не нужно использовать таймер.

Процедура для запуска хранителя на полном экране приблизительно такова:

Во-первых, мы проинициализировали некоторые глобальные переменные (описанные далее), затем прячем курсор мыши и создаем окно хранителя экрана. Имейте в виду, что важно уведомлять Windows, что это — хранителя экрана через SystemParametersInfo (это выводит из строя Ctrl-Alt-Del чтобы нельзя было вернуться в Windows не введя пароль). Создание окна хранителя:

Теперь окна созданы используя вызовы API. Я удалил проверку ошибки, но обычно все проходит хорошо, особенно в этом типе приложения.

Теперь Вы можете погадать, как мы получим handle родительского окна предварительного просмотра? В действительности, это совсем просто: Windows просто передает handle в командной строке, когда это нужно. Таким образом:

Как Вы видите, window handle является вторым параметром (после «-p»).

Чтобы «выполнять» хранителя экрана — нам нужна нить. Это создается с вышеуказанным CreateThread. Процедура нити выглядит примерно так:

Нить просто заставляет обновляться изображения в нашем окне, спит на некоторое время, и обновляет изображения снова. А Windows будет посылать сообщение WM_PAINT на наше окно (не в нить!). Для того, чтобы оперировать этим сообщением, нам нужна процедура:

Если мышь перемещается, кнопка нажата, мы спрашиваем у пользователя пароль:

Это также демонстрирует использование Registry на уровне API. Также имейте в виду как мы динамически загружаем функции пароля, используюя LoadLibrary. Запомните тип функции? TVSSFunc ОПРЕДЕЛЕН как:

Теперь почти все готово, кроме диалога конфигурации. Это запросто:

Трудная часть -это создать диалоговый сценарий (запомните: мы не используем здесь Delphi-формы!). Я сделал это, используя 16-битовую Resource Workshop (остался еще от Turbo Pascal для Windows). Я сохранил файл как сценарий (текст), и скомпилированный это с BRCC32:

Почти также легко сделать диалоговое меню:

После того, как пользователь выбрал некоторые установочные параметры, нам нужно сохранить их.

Загружаем параметры так:

Легко? Нам также нужно позволить пользователю, установить пароль. Я честно не знаю почему это оставлено разработчику приложений! Тем не менее:

Мы динамически загружаем (недокументированную) библиотеку MPR.DLL, которая имеет функцию, чтобы установить пароль хранителя экрана, так что нам не нужно беспокоиться об этом. TPCPAFund определён как:

Не спрашивайте меня что за параметры B и C ! :-)

Теперь единственная вещь, которую нам нужно рассмотреть — самая странная часть: создание графики. Я не великий гуру графики, так что вы не увидите затеняющие многоугольники, вращающиеся в реальном времени. Я только сделал некоторые ящики.

И последнее — глобальные переменные:

Затем исходная программа проекта (.dpr). Красива, а!?

Ох, чуть не забыл! Если, Вы используете SysUtils в вашем проекте (например фуекцию StrToInt) вы получите EXE-файл больше чем обещанный в 20K :-) Если Вы хотите все же иметь 20K, надо как-то обойтись без SysUtils, например самому написать собственную StrToInt процедуру.

Если все же очень трудно обойтись без использования Delphi-форм, то можно поступить как в случае с вводом пароля: форму изменения параметров хранителя сохранить в виде DLL и динамически ее загружать при необходимости. Т.о. будет маленький и шустрый файл самого хранителя экрана и довеска DLL для конфигурирования и прочего (там объем и скорость уже не критичны).

Статья добавлена: 1 июня 2005

Зарегистрируйтесь/авторизируйтесь,
чтобы оценивать статьи.

Статьи, похожие по тематике

Для вставки ссылки на данную статью на другом сайте используйте следующий HTML-код:

Ссылка для форумов (BBCode):

Быстрая вставка ссылки на статью в сообщениях на сайте:
<> (буква a — латинская) — только адрес статьи (URL);
<<статья:12>> — полноценная HTML-ссылка на статью (текст ссылки — название статьи).

Поделитесь ссылкой в социальных сетях:

Комментарии читателей к данной статье

Пока нет комментариев к данной статье. Оставьте свой и он будет первым.

Оставлять комментарии к статьям могут только зарегистрированные пользователи.

Илон Маск рекомендует:  Что такое код fdf_get_file
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL