为了账号安全,请及时绑定邮箱和手机立即绑定

转到系统调用调用窗口

转到系统调用调用窗口

Go
慕森王 2021-11-29 16:45:06
我目前正在尝试在 Go 上使用 user32.dll EnumWindows 但似乎不起作用var(    user32 = syscall.NewLazyDLL("user32.dll")    procEnumWindows = user32.NewProc("EnumWindows"))func EnumWindows() int {    ret, _, _ := procEnumWindows.Call(        syscall.NewCallback(enumWindowsProc),        uintptr(0),    )    return int(ret)}func enumWindowsProc(hwnd syscall.Handle, lparam uintptr) bool {    return true}调用 EnumWindows 会出现以下错误:panic: compileCallback: output parameter size is wrong我不确定我应该如何使用 syscall 包......我似乎找不到足够的文档在 MSDN 文档页面上,它说回调应该返回一个 BOOL,这就是我在做什么?
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

BOOL在 WinAPI 中声明为typedef int BOOL. 所以它不匹配 Go 的bool. 规格甚至没有提到它的尺寸是多少。它可能是 1 个字节,但它没有说出来。你应该int32改用。


查看完整回答
反对 回复 2021-11-29
  • 1 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信