我目前正在嘗試在 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}調(diào)用 EnumWindows 會出現(xiàn)以下錯誤:panic: compileCallback: output parameter size is wrong我不確定我應(yīng)該如何使用 syscall 包......我似乎找不到足夠的文檔在 MSDN 文檔頁面上,它說回調(diào)應(yīng)該返回一個 BOOL,這就是我在做什么?
1 回答

米琪卡哇伊
TA貢獻(xiàn)1998條經(jīng)驗 獲得超6個贊
BOOL
在 WinAPI 中聲明為typedef int BOOL
. 所以它不匹配 Go 的bool
. 規(guī)格甚至沒有提到它的尺寸是多少。它可能是 1 個字節(jié),但它沒有說出來。你應(yīng)該int32
改用。
- 1 回答
- 0 關(guān)注
- 179 瀏覽
添加回答
舉報
0/150
提交
取消