簡體   English   中英

去系統調用窗口

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM