我将使用什么API调用来更改笔记本电脑(.NET)的亮度?

我将使用什么API调用来更改笔记本电脑(.NET)的亮度?,.net,winapi,api,brightness,.net,Winapi,Api,Brightness,我在索尼笔记本电脑上安装了Windows Server 2008,但亮度控制不起作用。我想写一个程序来修改它 目前,我要做的就是打开电源控制面板,点击高级设置,并通过这么多的UAC框进行战斗,以至于任何人看到我都会认为我完全疯了 我只想要一个简单的小程序来做,但我不知道调用什么API这只是vista: 在使用SetMonitorBrightness设置显示器亮度之前,需要使用GetPhysicalMonitorsFromHMONITOR识别显示器。我怀疑以前在.net中没有人做过,所以您可能需

我在索尼笔记本电脑上安装了Windows Server 2008,但亮度控制不起作用。我想写一个程序来修改它

目前,我要做的就是打开电源控制面板,点击高级设置,并通过这么多的UAC框进行战斗,以至于任何人看到我都会认为我完全疯了

我只想要一个简单的小程序来做,但我不知道调用什么API这只是vista:


在使用SetMonitorBrightness设置显示器亮度之前,需要使用GetPhysicalMonitorsFromHMONITOR识别显示器。我怀疑以前在.net中没有人做过,所以您可能需要编写自己的互操作。该api似乎并不特别困难,因此您应该能够非常轻松地完成它。

据我所知,没有用于此的托管(.NET)api。但是,对于Vista,可以通过互操作使用非托管API。见MSDN:和

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


如果你不在Vista或Server2008上,你将陷入一个令人不快的世界:软件配置必须直接通过显示器驱动程序完成。根据你在上面提到的UAC,我怀疑你不是这样,但下一个家伙可能想知道。:)

要添加到DaEagles answer中,在.Net中使用win32 API时,该站点可以起到救命的作用。如果该信息不存在,请在为.Net进行成功的互操作后添加它。

这里只是一个头脑风暴。。。在笔记本电脑上,您可以使用键盘上的一些按键组合来更改亮度。如果您只想使按键更暗/更亮,而不必将其设置为特定值,则可以发送这些按键。

我在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
”来避免资源泄漏。

问题是愚蠢的索尼有一个亮度驱动程序(它不是基于硬件的)。我只是无法让它与UAC的2008服务器一起工作。永远不要不尝试,因为你知道你真的需要一个屏幕上的指示,亮度已经改变。还有一声嘟嘟。我的音量控制正常,但亮度不符合我的要求。它有代码。