Приветствую всех! Многие из вас, да и я в том числе пользуюсь заставками на своем компьютере, их такое множество, и не которые из них действительно требуют хороших навыков программирования. Сегодня я покажу пример который позволит вам с легкостью написать свой собственный скринсейвер. Для начала нам необходимо придумать что мы будет отображать можно использовать картинку или анимацию, возможно так же вам потребуется какая нибудь фоновая музыка. Я не долго думая в поисковике нашел гифвку водопада, а так же скачать соответствующую фоновую музыку. На этом наша предварительная работа закончена.
Приступаем части по написанию кода. А именно нам необходимо создать проект winform приложение и в свойствах проекта указать целевую платформу .Net Framework 2.0

Далее нам необходимо на форме в конструкторе разместить PictureBox размер и прочие настройки нас пока не особо беспокоят. Теперь нажмите два раза по форме, что бы создалась событие Form1_Load.
Далее приступаем к уже написанию кода.
using System;
using System.Drawing;
using System.Media;
using System.Windows.Forms;
using WaterfallScreenSaver.Properties;
namespace WaterfallScreenSaver
{
public partial class Form1 : Form
{
private Point MouseXY;
private int ScreenNumber;
SoundPlayer simpleSound;
public Form1(int scrn)
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None; //Убираем рамку вокруг формы
pictureBox1.Dock = DockStyle.Fill; //заполняем размером по всей форме
ScreenNumber = scrn;//это пригодится если у вас заставка будет иметь какие либо параметры
}
private void Form1_Load(object sender, EventArgs e)
{
this.Bounds = Screen.AllScreens[ScreenNumber].Bounds; //размер во весь экран
Cursor.Hide(); //прячем курсор
TopMost = true; //отображаем форму поверх других
simpleSound = new SoundPlayer(Resources.zvuk); //загрузка звука
simpleSound.Play(); //воспроизведение звука
}
private void OnMouseEvent(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (!MouseXY.IsEmpty) //вслучаи событий на мышь закрываем форму и приложение
{
if (MouseXY != new Point(e.X, e.Y))
{
Close();
simpleSound.Stop(); //останавливаем звук
}
if (e.Clicks > 0)
{
Close();
simpleSound.Stop();
}
}
MouseXY = new Point(e.X, e.Y);
}
}
}
В общем то это и есть основной код, я постарался и за комментировал почти все, однако хочу акцентировать внимание на методе OnMouseEvent который связан с событиями PictureBox, его необходимо привязать к событию на MouseClick и MouseMove MouseDown это все необходимо что бы выйти из запущенного скринсейвера. Так же вам необходимо добавь изображение и музыку в папку ресурсы. Сделать это можно как показано ниже:

Теперь нам необходимо перейти в фаил Program.cs и заменить код на следующий:
using System;
using System.Windows.Forms;
namespace WaterfallScreenSaver
{
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main(string[] args)
{
if (args.Length > 0)
{
if (args[0].ToLower().Trim().Substring(0, 2) == "/c")
{
MessageBox.Show("Эта заставка не имеет опций, которые вы можете установить.", ".NET Screen Saver", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else if (args[0].ToLower() == "/s")
{
for (int i = Screen.AllScreens.GetLowerBound(0); i <= Screen.AllScreens.GetUpperBound(0); i++)
System.Windows.Forms.Application.Run(new Form1(i));
}
}
else
{
for (int i = Screen.AllScreens.GetLowerBound(0); i <= Screen.AllScreens.GetUpperBound(0); i++)
System.Windows.Forms.Application.Run(new Form1(i));
}
}
}
}
Теперь нам необходимо собрать весь проект и врезультате мы получим приложение .EXE В котором необходимо изменить расширение на .scr

Теперь дело за малым, необходимо перенести этот фаил в папку Windows\System32\

Все готовы, осталось выбрать свою заставку и посмотреть, что же у нас получилось 🙂


Вот, что в итоге у меня вышло, делитесь своими работами, будет интересно 🙂 Мою работу вы можете скачать ниже:
