go调用Windows的com组件求教

wyymichael · · 1897 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

我和周围同事都是写linux的,这次有用com组件写Windows程序的需求,c++、c#之类的不会只能用go,我研究了半天,找到了go-ole这个库,但是没找到合适的例子,如下表格是com接口方给的文档,下面的代码是我写的,但是最后结果感觉不太对,跪求大神解答问题出在哪里? | 属性 | 值 | | -------- | -------- | | App ID | {0DCBF512-BB4D-48D0-932A-076456E6981D} | | Type Library ID | {232E9616-F847-49F7-9AC3-095831429411} | | Program ID | MedicareCom.Outpatient | | COM ClassName | Outpatient Class | | COM ClassID | {6ED3D8A4-FD47-4ED8-A93F-96EB87B5D830} | | Interface Type | Dual Interface | | Interface Name | IOutpatient 接口 | | Interface ID | {D1ED1DEE-8994-431C-B048-C0586E4A4C31} | ```go package main import ( ole "github.com/go-ole/go-ole" "github.com/go-ole/go-ole/oleutil" "fmt" ) func main() { ole.CoInitialize(0) unknown, _ := oleutil.CreateObject("MedicareCom.Outpatient") iid, _ := ole.IIDFromString("{D1ED1DEE-8994-431C-B048-C0586E4A4C31}") q, _ := unknown.QueryInterface(iid) r := oleutil.MustCallMethod(q, "Open", "") // 调用Open函数,没有参数 fmt.Println(r) fmt.Printf("%+v\n", r) } ``` 执行后,最后结果如下,感觉不太对,预期应该返回结果的字符串,但返回个VT_EMPTY实在不懂,求哪位大神能解答一下,这个go调用com组件到底怎么写。 ```shell &{VT_EMPTY 0 0 0 0} &{VT:VT_EMPTY wReserved1:0 wReserved2:0 wReserved3:0 Val:0} ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1897 次点击  
加入收藏 微博
4 回复  |  直到 2022-09-23 17:15:21
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传