我目前正在尝试在 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
改用。
- 1 回答
- 0 关注
- 155 浏览
添加回答
举报
0/150
提交
取消