我在Sony笔记本电脑上安装了Windows Server 2008,亮度控制不起作用。我想写一个程序让我改变它。
目前我要做的就是打开电源控制面板,点击高级设置,然后通过如此多的UAC盒子进行战斗,任何看着我的人都必须认为我完全疯了。
我只想要一个简单的小程序来做,但我不知道要调用什么API
答案 0 :(得分:9)
我在MSDN中查找了John Rudy的WmiSetBrightness链接,并想出了这个:
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
”以避免资源泄漏。
答案 1 :(得分:2)
这只是vista:
http://msdn.microsoft.com/en-us/library/ms775232.aspx
在使用SetMonitorBrightness设置亮度之前,您需要使用GetPhysicalMonitorsFromHMONITOR识别显示器。我怀疑在.net之前没有人这样做过,所以你可能需要编写自己的互操作。 api看起来并不是特别困难,所以你应该能够很容易地做到这一点。
答案 2 :(得分:1)
据我所知,没有托管(.NET)API。但是,对于Vista,可以通过互操作提供非托管API。请参阅MSDN:Monitor Configuration APIs和WmiSetBrightness。
可能有管理方式来命中WmiSetBrightness方法,但我不知道它们。
如果您不在Vista或Server 2008上,那么您将面临一个令人不快的世界:软件配置必须直接通过显示器驱动程序完成。基于你上面提到的UAC,我怀疑对你来说并非如此,但下一个人可能想知道。 :)
答案 3 :(得分:1)
这里只是一个头脑风暴......在笔记本电脑上,您可以使用键盘上的一些按键角色来改变亮度。应该可以发送那些按键如果你只是想让它更暗/更轻而不必将它设置为特定值。
答案 4 :(得分:0)
要添加到DaEagles答案,{。3}}网站在.Net中使用win32-apis时可以节省生命。如果该信息不存在,请在为.Net创建成功的互操作后添加。