[英]Go syscall call windows
我目前正試圖在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,這就是我在做什么?
WinAPI中的BOOL
聲明為typedef int BOOL
。 所以它與Go的bool
不匹配。 規格甚至沒有提到它的尺寸。 它可能是1個字節,但它沒有說出來。 你應該使用int32
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.