Предотвращение закрытия экрана компьютера: несколько методов и примеры кода

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

Метод 1: отключение экранной заставки и спящего режима (Windows)
Пример кода (C#):

using System;
using System.Runtime.InteropServices;
public class ScreenSaverControl
{
    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
    public static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);
    [FlagsAttribute]
    public enum EXECUTION_STATE : uint
    {
        ES_CONTINUOUS = 0x80000000,
        ES_SYSTEM_REQUIRED = 0x00000001,
        ES_DISPLAY_REQUIRED = 0x00000002
    }
    public static void PreventScreenFromClosing()
    {
        SetThreadExecutionState(EXECUTION_STATE.ES_DISPLAY_REQUIRED | EXECUTION_STATE.ES_CONTINUOUS);
    }
    public static void AllowScreenToClose()
    {
        SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS);
    }
}

Метод 2: отключение заставки и спящего режима (macOS)
Пример кода (Swift):

import Foundation
import IOKit
func preventScreenFromClosing() {
    let assertionID = IOPMAssertionID(0)
    IOPMAssertionCreateWithName(kIOPMAssertionTypePreventUserIdleDisplaySleep as CFString,
                                IOPMAssertionLevel(kIOPMAssertionLevelOn),
                                assertionID,
                                nil,
                                nil)
}
func allowScreenToClose() {
    let assertionID = IOPMAssertionID(0)
    IOPMAssertionRelease(assertionID)
}

Метод 3: отключение экранной заставки и спящего режима (Linux)
Пример кода (Python):

import subprocess
def prevent_screen_from_closing():
    subprocess.call(['xset', 's', 'off'])
    subprocess.call(['xset', '-dpms'])
def allow_screen_to_close():
    subprocess.call(['xset', 's', 'on'])
    subprocess.call(['xset', '+dpms'])
}

Метод 4. Программное перемещение курсора мыши
Пример кода (C#):

using System;
using System.Runtime.InteropServices;
public class MouseMover
{
    [DllImport("user32.dll")]
    private static extern bool SetCursorPos(int X, int Y);
    public static void MoveMouse(int x, int y)
    {
        SetCursorPos(x, y);
    }
}

Метод 5. Имитация ввода с клавиатуры
Пример кода (Python с использованием библиотеки pyautogui):

import pyautogui
def simulate_keystroke(key):
    pyautogui.press(key)
}

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