Cod*_*eld 4 c# windows wmi interop brightness
GetMonitorBrightness http://msdn.microsoft.com/zh-cn/library/ms775205.aspx如何工作?有人可以给我一个在C#中调用此代码的实际可行实现吗?
我正在尝试检索笔记本电脑支持的允许亮度级别。
我有以下工作代码将亮度设置为1到〜150。但是我正在寻找允许的输入值(最小最大值)。
static void SetBrightness(byte targetBrightness)
{
ManagementScope scope = new ManagementScope("root\\WMI");
SelectQuery query = new SelectQuery("WmiMonitorBrightnessMethods");
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
{
using (ManagementObjectCollection objectCollection = searcher.Get())
{
foreach (ManagementObject mObj in objectCollection)
{
mObj.InvokeMethod("WmiSetBrightness",
new Object[] { UInt32.MaxValue, targetBrightness });
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
虽然应该可以使用Interop,但也可以通过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
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我真的很好奇如何处理“特殊”情况,例如非笔记本电脑屏幕,以及它们是否采取任何方式影响亮度。
| 归档时间: |
|
| 查看次数: |
2438 次 |
| 最近记录: |