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

Поговорим о создании экранной заставки, которая используется многими пользователями для различных целей. Изначально хранители экрана предназначались для защиты от выгорания мониторов, но затем мониторы избавились от этой болезни и в настоящее время экранные заставки являются больше украшением, чем рабочей необходимостью. Хотя многие программисты пытаются написать программы, которые на их взгляд, имеют полезные функци.

Прежде чем мы приступим к созданию экранной заставки, необходимо знать несколько вещей. Во-первых, экранная заставка является обычным приложением, у которого вместо расширения EXE используется расширение SCR. Заставка должна блокировать запуск других экземпляров заставки. Кроме того, на экране не должен отображаться указатель мыши. Программа должна автоматически закрываться при нажатии любой клавиши или кнопки мыши, а также при перемещении мыши. Также следует придерживаться некоторых правил. Например, окно программы должно занимать весь экран, на форме не должно быть заголовка, на экран должно выводиться динамическое изображение.

Второй момент - экранная заставка должна правильно реагировать на команды контекстного меню. Если вы выберите любую стандартную заставку из поставки Windows и посмотрите на контекстное меню, то увидите несколько команд, позволяющие запустить заставку без предварительной установки, открыть диалоговое окно настроек скринсейвера или установить его в качестве хранителя экрана по умолчанию.

Подобное поведение заставки задается при помощи параметров командной строки. Ваша задача, обработать параметры и выполнить какое-либо действие. Таких параметров несколько:

/s – загружается заставка в обычном режиме
/c – загружает экран конфигурации при нажатии на кнопку Параметры
/p – загружает предварительный просмотр. При нажатии на кнопку Просмотр должна запуститься сама заставка.

Обработка может происходить следующим образом:

	
if (args.Length < 0)
{
    // Получаем два символа аргумента командной строки
    string arg = args[0].ToLower(CultureInfo.InvariantCulture).Trim().Substring(0, 2);
    switch (arg)
    {
        case "/c":
            // Выводим окно настроек заставки
            ShowOptions();
            break;
        case "/p":
            // Какие-то действия в окне предварительного просмотра
            break;
        case "/s":
            // Показываем саму заставку
            ShowScreenSaver();
            break;
        default:
            MessageBox.Show("Неверный аргумент командной строки :" + arg, "Неверный аргумент командной строки", 
            MessageBoxButtons.OK, MessageBoxIcon.Error);
            break;
    }
}
else
{
    // Если аргументы командной строки не использовались, то показываем заставку
    ShowScreenSaver();
}
    
	

Програмнное включение заставки

В дополнение к материалу о создании собственной заставки, расскажу о том, как программно включать хранитель экрана из собственной программы. Обычно, заставка включается самостоятельно, когда ваш компьютер бездействует некоторое время (установлено настройками). Чтобы принудительно включить заставку программно, необходимо послать сообщение  WM_SYSCOMMAND с параметром SC_SCREENSAVE.

	
public const int WM_SYSCOMMAND = 0x112;
public const int SC_SCREENSAVE = 0xF140;

SendMessage(this.Handle, WM_SYSCOMMAND, SC_SCREENSAVE, 0);
	
	
Реклама

гробы типа такого изготовление и установка надгробных памятников kamendvir.com;похоронные услуги киев к примеру надгробные памятники изготовление