zoukankan      html  css  js  c++  java
  • 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)?

  • 相关阅读:
    锐浪报表应用系列二
    论产品和项目
    我的处女作
    今天晚上吃什么?
    今日晚餐
    PYTHON+数据库
    周末看到小区有个阿姨溜羊驼
    AD 10使用技巧---新学习
    使用.NET进行高效率互联网敏捷开发的思考和探索【一、概述】
    【开发随感】【一】【开发基础的基础】
  • 原文地址:https://www.cnblogs.com/strive-sun/p/13214738.html
Copyright © 2011-2022 走看看