我目前正在嘗試在 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 關注
- 182 瀏覽
添加回答
舉報
0/150
提交
取消