我将使用什么 API 调用来更改笔记本电脑 (.NET) 的亮度?
-
22-08-2019 - |
题
我在索尼笔记本电脑上安装了 Windows Server 2008,但亮度控制不起作用。我想编写一个程序来允许我更改它。
目前我要做的就是打开电源控制面板,单击高级设置,并与如此多的 UAC 框进行斗争,任何观看我的人一定认为我完全疯了。
我只是想要一个简单的小程序来完成它,但我不知道要调用什么API
解决方案
我抬头 约翰·鲁迪的链接到 Wmi设置亮度 在 MSDN 中并提出了这个:
ManagementClass mclass = new ManagementClass("WmiMonitorBrightnessMethods");
mclass.Scope = new ManagementScope(@"\\.\root\wmi");
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);
}
笔记: ManagementClass
, ManagementObjectCollection
, , 和 ManagementObject
全部实施 IDisposable
. 。你应该打电话 Dispose()
或使用“using
”以避免资源泄漏。
其他提示
这是仅适用于Vista:
http://msdn.microsoft.com/en-us/library /ms775232.aspx
您需要SetMonitorBrightness设置其亮度之前,以识别与GetPhysicalMonitorsFromHMONITOR显示器。我怀疑没有人这么做过在.NET所以你可能需要编写自己的互操作。 API不显得尤为困难,所以你应该能够做到这一点很容易地。
在这里只是一个brainstormer ...在笔记本电脑,你可以使用键盘上的一些关键kombinations改变亮度。它应该可以把那些keyspresses如果你只是想使它更暗/重量更轻,没有将它设置为一个特定的值。
要添加到DaEagles回答, http://www.pinvoke.net/ 网站可以是在.NET中使用Win32的API的工作时,一个生命的救星。如果信息不存在那里,请添加它,当你做出了成功的互操作的.NET。