Исходник построен на интерфейсе Windows Forms. Простой, надежный и проверенный временем интерфейс. Язык программирования C#. Оформление интерфейса данной программы-шутки может быть любым, потому что рабочий интерфейс формируется из копии изображения экрана. Внешне программа состоит из маленького окна с одной кнопкой. При нажатии на эту кнопку запускается скрытый процесс шутки. Программа совершенно безопасна для операционной системы, не оставляет никаких записей реестре, не влияет на работу программ и только создает временные визуальные эффекты зависания компьютера.
Запуск программы. Формируется окно с симпатичной картинкой.
Нажатие на кнопку «Запуск». Окно программы скрывается и запускается процесс ожидания событий таймера.
Событие таймера формирует изображение экрана и загружается в контейнер PictureBox расположенный на форме окна программы. Окно становится видимым, размещается поверх других приложений и так как поверхность окна — это изображение экрана 1:1 то создаётся впечатление зависание компьютера.
Следующее событие таймера и окно программы-шутки незаметно скрывается. «Компьютер выходит из зависания», вроде бы 😁.
События таймера замыкают процесс показа и скрытия копии изображения экрана. При лихорадочных щёлканьях раздраженного пользователя 😂 процесс ненадолго прерывается и затем всё повторяется вновь. Отключить программы можно двойным щелчком по застывшему экрану при предварительно нажатой кнопке Ctrl.
Программа простая по компоновке, построена на классе формы FormJokeScreen. В данный класс добавлены несколько методов и событий, обеспечивающих процесс создания цифровой шутки.
Метод CopyScreen() отвечает за создание точной копии изображения экрана и расположения её на поверхности формы программы-шутки. В качестве контейнера для изображения выступает PictureBox.
private void CopyScreen()
{
// Получаем размеры экрана дисплея.
int widthScreen = Screen.PrimaryScreen.Bounds.Width;
int heightScreen = Screen.PrimaryScreen.Bounds.Height;
// Создаем битовый массив (картинку) размером как у экрана монитора.
var bitmapImage = new Bitmap(widthScreen, heightScreen);
// Создаем поверхность рисования на созданном выше битовом массиве (картинке).
var drawingSurface = Graphics.FromImage(bitmapImage);
// Копируем изображение экрана в битовый массив.
drawingSurface.CopyFromScreen(0, 0, 0, 0, bitmapImage.Size);
// Созданную копию изображения экрана загружаем в PictureBox,
// расположенный на поверхности окна программы-шутки.
pictureScreenFake.Image = bitmapImage;
}
Метод Reset() прекращает процесс цифровой шутки и восстанавливает первоначальный вид окна программы.
/// <summary>
/// Остановка процесса шутки,
/// и восстановление окна до первоначального вида.
/// </summary>
private void Reset()
{
// Останавливаем таймер
timerProcess.Stop();
// В первую очередь:
// Восстанавливаем первоначальный вид
this.FormBorderStyle = FormBorderStyle.FixedToolWindow;
// Во вторую очередь:
// Восстанавливаем размер и положение окна на экране
this.Bounds = rectangleBounds;
// Восстанавливаем первоначальную картинку.
pictureScreenFake.Image = Properties.Resources.улыбка;
// Окно становится обычным в Z индексе
this.TopMost = false;
// Показываем кнопку
buttonStart.Show();
}
При нажатии кнопки генерируется событие buttonStart_Click(object sender, EventArgs e). Окно программы становится невидимым и пока оно невидимо, изменяется стиль и размер. Запускает таймер процесса цифровой шутки. Для восстановления первоначальных размеров в этом событии происходит запоминание первоначальных размеров окна.
private void buttonStart_Click(object sender, EventArgs e)
{
// Запоминаем размеры окна.
rectangleBounds = this.Bounds;
// Скрываем окно программы-шутки
this.Hide();
// Скрываем кнопку.
buttonStart.Hide();
// Удаляем рамку вокруг окна.
this.FormBorderStyle = FormBorderStyle.None;
// Размер окна должен быть равен размеру экрана в пискелях.
this.Bounds = Screen.PrimaryScreen.Bounds;
// Окно должно быть выше всех,
// чтобы скрывать всё остальное.
this.TopMost = true;
// Запускаем таймер управления видимостью окна.
timerProcess.Start();
}
Событие pictureScreenFake_DoubleClick(object sender, EventArgs e) необходимо для остановки программы в момент когда она заслоняет экран копией изображения. Если щелкнуть двойным кликом, то окно программы скроется и таймер запустится заново. Двойной щелчок может произойти, когда пользователь компьютера лихорадочно щелкает по зависшему экрану.
Если же двойной щелчок происходит при нажатой клавише Ctrl, то проказница программа остановит свой процесс и покажет себя во всей красе 😁.
/// <summary>
/// Если по развернутому окну сделать двойной щелчок,
/// окно скроется и таймер запустится заново.
/// Если перед двойным кликанием нажать клавишу Ctrl
/// процесс остановится и окно возвратится к первоначальному виду.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void pictureScreenFake_DoubleClick(object sender, EventArgs e)
{
if (Control.ModifierKeys == Keys.Control)
{
Reset();
}
else
{
this.Visible = false;
timerProcess.Start();
}
}
Исходник создан в интегрированной среде программирования MS Visual Studio 2019. Исходный код написан на языке C#. В прикреплённом архивном файле содержится исходник программы и сама скомпилированная программа-шутка.
Скачать исходник
Тема: «Исходный код программы-шутки»
JokeScreen.zip
Размер:657 КбайтЗагрузки:1180