• win32-改变显示器的亮度


    调用SetMonitorBrightness

    代码示例:

    #pragma comment(lib, "dxva2.lib")
    #include <windows.h>
    #include <lowlevelmonitorconfigurationapi.h>
    #include <physicalmonitorenumerationapi.h>
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string>
    #include <highlevelmonitorconfigurationapi.h>
    
    using namespace std;
    
    int main()
    {
        HWND hWnd = GetDesktopWindow();
        HMONITOR hMonitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTOPRIMARY);
        cout << "Monitor: " << hMonitor << endl;
    
        DWORD cPhysicalMonitors;
        BOOL bSuccess = GetNumberOfPhysicalMonitorsFromHMONITOR(hMonitor, &cPhysicalMonitors);
        cout << "GetNumber: " << bSuccess << ", number of physical monitors: " << cPhysicalMonitors << endl;
    
        LPPHYSICAL_MONITOR pPhysicalMonitors = (LPPHYSICAL_MONITOR)malloc(cPhysicalMonitors * sizeof(PHYSICAL_MONITOR));
        bSuccess = GetPhysicalMonitorsFromHMONITOR(hMonitor, cPhysicalMonitors, pPhysicalMonitors);
        cout << "GetPhysicalMonitor: " << bSuccess << endl
            << "Handle: " << pPhysicalMonitors->hPhysicalMonitor << endl
            << "Description: ";
        wcout << (WCHAR*)(pPhysicalMonitors->szPhysicalMonitorDescription);
    
        DWORD MinimumBrightness;
        DWORD CurrentBrightness;
        DWORD MaximumBrightness;
        BOOL err = GetMonitorBrightness(pPhysicalMonitors->hPhysicalMonitor, &MinimumBrightness, &CurrentBrightness, &MaximumBrightness);
    
        err = SetMonitorBrightness(pPhysicalMonitors->hPhysicalMonitor, 50);
    
        int err1 = GetLastError();
        DWORD MonitorCapabilities;
        DWORD SupportedColorTemperatures;
        err = GetMonitorCapabilities(pPhysicalMonitors->hPhysicalMonitor, &MonitorCapabilities, &SupportedColorTemperatures);
        
        DestroyPhysicalMonitors(cPhysicalMonitors, pPhysicalMonitors);
        free(pPhysicalMonitors);
    
    }

    上面代码只对台式机的显示器起作用,如果要改变笔记本电脑的显示器亮度,请改用 WmiSetBrightness 

    样例:

    ManagementClass mclass = new ManagementClass("WmiMonitorBrightnessMethods");
    mclass.Scope = new ManagementScope(@"\.
    ootwmi");
    ManagementObjectCollection instances = mclass.GetInstances();
    
    // I assume you get one instance per monitor
    foreach(ManagementObject instance in instances)
    {
        ulong timeout = 1; // in seconds
        ushort brightness = 50; // in percent
        object[] args = new object[] { timeout, brightness };
        instance.InvokeMethod("WmiSetBrightness", args);
    }

    链接: What API call would I use to change brightness of laptop (.NET)?

  • 相关阅读:
    codevs 3115 高精度练习之减法 swap
    codevs 3116 高精度练习之加法
    poj 3984 迷宫问题
    codevs m进制转化成10进制
    codevs 1214 线段覆盖
    codevs 3143 二叉树的序遍历
    codevs 3145 汉诺塔
    HDU 5093 Battle ships [二分图匹配]
    HDU 5074 Hatsune Miku [dp] ——2014鞍山现场赛E题
    ZOJ 3793 First Digit (逗比题)
  • 原文地址:https://www.cnblogs.com/strive-sun/p/13214738.html
Copyright © 2020-2023  润新知