我在索尼笔记本电脑上安装了 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不显得尤为困难,所以你应该能够做到这一点很容易地。

据我所知,没有用于此目的的托管(.NET)API。但是,对于 Vista,可以通过互操作使用非托管 API。参见MSDN: 监控配置APIWmi设置亮度.

可能有一些管理方法可以调用 WmiSetBrightness 方法,但我不知道它们。

如果您使用的不是 Vista 或 Server 2008,您将面临一个令人不愉快的世界:软件配置必须直接通过显示器驱动程序完成。根据您上面提到的 UAC,我怀疑您的情况并非如此,但下一个人可能想知道。:)

在这里只是一个brainstormer ...在笔记本电脑,你可以使用键盘上的一些关键kombinations改变亮度。它应该可以把那些keyspresses如果你只是想使它更暗/重量更轻,没有将它设置为一个特定的值。

要添加到DaEagles回答, http://www.pinvoke.net/ 网站可以是在.NET中使用Win32的API的工作时,一个生命的救星。如果信息不存在那里,请添加它,当你做出了成功的互操作的.NET。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top