gpt4 book ai didi

Go syscall 调用窗口

转载 作者:IT王子 更新时间:2023-10-29 02:33:45 27 4
gpt4 key购买 nike

我目前正在尝试在 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

我不确定我应该如何使用系统调用包...我似乎找不到足够的文档

在 MSDN 文档页面上它说回调应该返回一个 BOOL,这就是我在做什么?

最佳答案

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

关于Go syscall 调用窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34372601/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com