Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从C查询GetMonitorBrightness#_C#_Windows_Interop_Wmi_Brightness - Fatal编程技术网

C# 如何从C查询GetMonitorBrightness#

C# 如何从C查询GetMonitorBrightness#,c#,windows,interop,wmi,brightness,C#,Windows,Interop,Wmi,Brightness,GetMonitorBrightness是如何工作的?有人能给我一个在C#中调用此代码的实际工作实现吗 我正在尝试检索我的笔记本电脑支持的允许亮度级别 我有下面的工作代码,将亮度设置为1到150。但是我正在寻找允许的输入值(最小-最大值) 该函数具有最小值和最大值的输出: LPDWORD pdwMinimumBrightness=NULL; LPDWORD pdwMaximumBrightness=NULL; HANDLE pmh = pPhysicalMonitors[0].hPhysical

GetMonitorBrightness是如何工作的?有人能给我一个在C#中调用此代码的实际工作实现吗

我正在尝试检索我的笔记本电脑支持的允许亮度级别

我有下面的工作代码,将亮度设置为1到150。但是我正在寻找允许的输入值(最小-最大值)


该函数具有最小值和最大值的输出:

LPDWORD pdwMinimumBrightness=NULL;
LPDWORD pdwMaximumBrightness=NULL;
HANDLE pmh = pPhysicalMonitors[0].hPhysicalMonitor;
GetMonitorBrightness(pmh, pdwMinimumBrightness, pdwMaximumBrightness);

这是假设您需要第一个监视器的值。

在使用互操作时,应该可以通过WMI使用此功能。稍微更改我的原始代码会产生以下代码:

 ManagementScope scope;
 SelectQuery query;

 scope = new ManagementScope("root\\WMI");
 query = new SelectQuery("SELECT * FROM WmiMonitorBrightness");

 using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
 {
    using (ManagementObjectCollection objectCollection = searcher.Get())
    {
      foreach (ManagementObject mObj in objectCollection)
      {
        Console.WriteLine(mObj.ClassPath);
        foreach (var item in mObj.Properties)
        {
          Console.WriteLine(item.Name + " " +item.Value.ToString());
          if(item.Name =="CurrentBrightness")
            //Do something with CurrentBrightness
        }
      }
    }
  }

现在我真的很好奇如何处理像非笔记本电脑屏幕这样的“特殊”情况,以及它们是否实现了任何影响亮度的方法。

你能给出一些实际的工作代码吗?我似乎找不到如何实际调用此函数/WMI。我认为这是针对physical monitor的,一种不同的API:
 ManagementScope scope;
 SelectQuery query;

 scope = new ManagementScope("root\\WMI");
 query = new SelectQuery("SELECT * FROM WmiMonitorBrightness");

 using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
 {
    using (ManagementObjectCollection objectCollection = searcher.Get())
    {
      foreach (ManagementObject mObj in objectCollection)
      {
        Console.WriteLine(mObj.ClassPath);
        foreach (var item in mObj.Properties)
        {
          Console.WriteLine(item.Name + " " +item.Value.ToString());
          if(item.Name =="CurrentBrightness")
            //Do something with CurrentBrightness
        }
      }
    }
  }