我想创建代码,设置速度的机箱风扇,必须在Windows7上工作。
我尝试使用wmi代码生成器,但出现错误Invalid object path
using System;
using System.Management;
using System.Windows.Forms;
namespace WMISample
{
public class CallWMIMethod
{
public static void Main()
{
try
{
ManagementObject classInstance =
new ManagementObject("root\\CIMV2",
"Win32_Fan.ReplaceKeyPropery='ReplaceKeyPropertyValue'",
null);
// Obtain in-parameters for the method
ManagementBaseObject inParams =
classInstance.GetMethodParameters("SetSpeed");
// Add the input parameters.
inParams["DesiredSpeed"] = 600;
// Execute the method and obtain the return values.
ManagementBaseObject outParams =
classInstance.InvokeMethod("SetSpeed", inParams, null);
// List outParams
Console.WriteLine("Out parameters:");
Console.WriteLine("ReturnValue: " + outParams["ReturnValue"]);
}
catch(ManagementException err)
{
MessageBox.Show("An error occurred while trying to execute the WMI method: " + err.Message);
}
}
}
}
有没有可能去看一下风扇。有什么可以帮忙的吗?
最佳答案
您编译代码是因为它是有效的代码。它在运行时失败,因为您要求它做一些非法的事情。根据MSDN:
设置速度未执行。
既然如此,这条线就会失败:
ManagementBaseObject inParams =
classInstance.GetMethodParameters("SetSpeed");
如果未实现
SetSpeed
(而不是简单地忽略),则在尝试检索与之相关的参数时会出现异常。删除try/catch以验证它发生在哪一行。制造商可能有一个实用程序允许这样做,但它似乎怀疑wmi是否能工作。如果您确实找到了这样一个工具,您可能需要计算bool属性
VariableSpeed
以查看是否甚至支持变速。