我有以下......
using System;
using System.Management;
using System.Windows.Forms;
namespace WMISample
{
public class CallWMIMethod
{
public static ushort GetMonitorBrightness() {
using (var mclass = new ManagementClass("WmiMonitorBrightness")) {
mclass.Scope = new ManagementScope(@"\\.\root\wmi");
using (var instances = mclass.GetInstances()) {
foreach (ManagementObject instance in instances) {
return (byte) instance.GetPropertyValue("CurrentBrightness");
}
}
}
return 0;
}
public static void SetMonitorBrightness(ushort brightness) {
using (var mclass = new ManagementClass("WmiMonitorBrightnessMethods")) {
mclass.Scope = new ManagementScope(@"\\.\root\wmi");
using (var instances = mclass.GetInstances()) {
foreach (ManagementObject instance in instances) {
object[] args = new object[] { 1, brightness };
instance.InvokeMethod("WmiSetBrightness", args);
}
}
}
}
public static void Main()
{
Console.WriteLine (GetMonitorBrightness());
}
}
}
使用WMI获取显示器亮度是一件非常基本的事情。但我似乎无法运行它,我在foreach (ManagementObject instance in instances) {
System.Management.ManagementException - Not supported
时遇到错误{{1}}我不知道发生了什么。我正在使用monodevelop来编译它。它编译很好,只是在试图运行时死亡。我在Windows 7上,所以不是这样。 WMI服务正在运行。
我不确定发生了什么。
答案 0 :(得分:1)
Mono兼容性页面明确指出System.Management未实现也不受支持,因为没有WMI的计数器部分等等。
http://mono-project.com/Compatibility
您必须包装Linux本机API以实现您在Windows上尝试执行的操作,这显然是您应该发布的另一个问题。
答案 1 :(得分:0)
问题可能是由于您自己的显卡驱动程序(它们是最新的)吗?
在网上搜索(寻找“WmiMonitorBrightness不支持”)有很多用户有自己的问题,特别是在笔记本电脑/笔记本电脑上(其中一些用户在将视频驱动程序升级到最新版本后修复了...你做过吗? ?)。
无论如何,StackOverflow上已经存在一个非常类似的问题:你可以找到它here。