Отрегулируйте яркость родным способом в Windows

Мне было интересно, что является родным способом регулировки яркости в Windows?

Под родным я имею в виду метод, который также отображает наложение яркости в верхнем левом углу в Windows 8, 8.1 и 10, как если бы были нажаты специальные клавиши яркости.

Я искал это по всему Интернету, но некоторые решения, которые работают, регулируют яркость, но наложения не отображаются. Любая идея? Есть ли что-то вроде

SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);

который выключает монитор, но для яркости, который можно использовать из C++? Или C#? Благодарю.

Обновление: вот пример кода.

HMONITOR hMonitor = NULL;
DWORD cPhysicalMonitors;
LPPHYSICAL_MONITOR pPhysicalMonitors = NULL;

// Get the monitor handle.
hMonitor = MonitorFromWindow(GetForegroundWindow(), MONITOR_DEFAULTTOPRIMARY);

// Get the number of physical monitors.
BOOL bSuccess = GetNumberOfPhysicalMonitorsFromHMONITOR(
    hMonitor,
    &cPhysicalMonitors
);

if (bSuccess)
{
    // Allocate the array of PHYSICAL_MONITOR structures.
    pPhysicalMonitors = (LPPHYSICAL_MONITOR)malloc(
        cPhysicalMonitors * sizeof(PHYSICAL_MONITOR));

    if (pPhysicalMonitors != NULL)
    {
        // Get the array.
        bSuccess = GetPhysicalMonitorsFromHMONITOR(
            hMonitor, cPhysicalMonitors, pPhysicalMonitors);

        // Use the monitor handles (not shown).
        DWORD pdwMinimumBrightness = 0;
        DWORD pdwCurrentBrightness = 0;
        DWORD pdwMaximumBrightness = 0;

        DWORD dwMonitorCapabilities = 0;
        DWORD dwSupportedColorTemperatures = 0;

        bSuccess = GetMonitorCapabilities(pPhysicalMonitors, &dwMonitorCapabilities, &dwSupportedColorTemperatures);

        cout << bSuccess << endl;

        // Close the monitor handles.
        bSuccess = DestroyPhysicalMonitors(
            cPhysicalMonitors,
            pPhysicalMonitors);

        // Free the array.
        free(pPhysicalMonitors);
    }
}

cout << bSuccess всегда пишет 0 в терминале.

GetMonitorCapabilities завершается с ошибкой -1071241854 (0xC0262582: "Произошла ошибка при передаче данных на устройство по шине I2C."). Тогда как работают клавиши яркости на моем компьютере?

0 ответов

Другие вопросы по тегам