go - 在 golang 中调用带有 WMI 类参数的方法
问题描述
我正在尝试调用 WmiMonitorBrightnessMethods 类的 WmiSetBrightness 方法:
在https://github.com/go-ole/go-ole和调用 WMI 类方法的示例代码的帮助下
我不知道为什么它一直返回错误:
wmi: error calling method WmiSetBrightness: Exception occurred. (Invalid method Parameter(s) )
我已经搜索了一段时间,但我仍然无法弄清楚传递 Timeout 和 Brightness 这两个参数的正确方法。
我的代码如下:
func main() {
err := ole.CoInitializeEx(0, ole.COINIT_MULTITHREADED)
if err != nil {
log.Fatal(err)
}
unknown, err := oleutil.CreateObject("WbemScripting.SWbemLocator")
if err != nil {
log.Fatal(err)
}
defer unknown.Release()
wmi, err := unknown.QueryInterface(ole.IID_IDispatch)
if err != nil {
log.Fatal(err)
}
defer wmi.Release()
serviceRaw, err := oleutil.CallMethod(wmi, "ConnectServer", nil, `root/WMI`)
if err != nil {
log.Fatal(err)
}
service := serviceRaw.ToIDispatch()
defer serviceRaw.Clear()
typeName := "WmiMonitorBrightnessMethods"
typeRaw, err := oleutil.CallMethod(service, "Get", typeName)
if err != nil {
log.Fatalf("wmi: error fetching type %v: %v", typeName, err)
}
typeResult := typeRaw.ToIDispatch()
defer typeRaw.Clear()
methodName := "WmiSetBrightness"
// Set Brightness value to 20 with the Timeout 1
methodRaw, err := oleutil.CallMethod(typeResult, methodName, 1, 20)
if err != nil {
log.Fatalf("wmi: error calling method %v: %v", methodName, err)
}
item := methodRaw.ToIDispatch()
defer methodRaw.Clear()
_ = item
}
解决方案
推荐阅读
- c# - 来自 C# 控制器的 Angular http post formData 不受支持的媒体类型
- django - 如何在 django 管理表单中显示属于用户公司的列表段落
- javascript - 无法使用 ejs.renderfile 正确渲染图像
- python - C++ 与 Python 没有模块命名编码
- angular - 使用 REST API 角度 8
- react-native - 为什么 axios 总是落入陷阱?
- java - 尝试制作战舰,但 String[][] 板无法正确更新
- ms-access - 访问:如何实现将联系人加入旅行?
- node.js - 试图在快速 js 路由中结束代码执行
- azure - Azure Function 响应超时,并在收到所有内容之前重置(关闭)tcp 连接