dongwei1855 2018-11-23 05:06
浏览 1100

在Golang中使用WMI类的参数调用方法

I am trying to call the WmiSetBrightness method of the WmiMonitorBrightnessMethods class:

https://docs.microsoft.com/en-us/windows/desktop/wmicoreprov/wmisetbrightness-method-in-class-wmimonitorbrightnessmethods

with the help of https://github.com/go-ole/go-ole and example code from Calling a method of a WMI Class

I don't know why it keeps returning the error:

wmi: error calling method WmiSetBrightness: Exception occurred. (Invalid method Parameter(s) )

I have searched for a while but I still can't figure out the correct way to pass the two parameters Timeout and Brightness.

My code is as followed:

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
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 求一个html代码,有偿
    • ¥100 关于使用MATLAB中copularnd函数的问题
    • ¥20 在虚拟机的pycharm上
    • ¥15 jupyterthemes 设置完毕后没有效果
    • ¥15 matlab图像高斯低通滤波
    • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
    • ¥15 钢筋实图交点识别,机器视觉代码
    • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
    • ¥50 400g qsfp 光模块iphy方案
    • ¥15 两块ADC0804用proteus仿真时,出现异常