gpt4 book ai didi

winapi - 在使用 syscall.Syscall 和 WinAPI 时遇到问题

转载 作者:IT王子 更新时间:2023-10-29 01:55:37 26 4
gpt4 key购买 nike

我正在尝试使用 VkKeyScan来自 Window 的 API,但是只要调用该函数,程序就会崩溃。我以这种方式导入和使用的其他 Window API 函数没有问题。我的 syscall.Syscall 调用有问题吗?

var (
user32, _ = syscall.LoadLibrary("user32.dll")
vkKeyScan, _ = syscall.GetProcAddress(user32, "VkKeyScan")
)

func VkKeyScan(char byte) (int16, syscall.Errno) {
var nargs uintptr = 1
ret, _, callErr := syscall.Syscall(uintptr(vkKeyScan), nargs, uintptr(char), 0, 0)
return int16(ret), callErr
}

最佳答案

VkScanKey 在 C 中工作,因为它是 #defined 大致如下:

#ifdef UNICODE
# define VkScanKey VkScanKeyW
#else
# define VkScanKey VkScanKeyA
#endif

所以 VkScanKey 不是真正的符号 — VkScanKeyW 是,而且这是 GetProcAddress 接受它的唯一形式。如果你有如果您一直在进行正确的错误处理,您可能已经注意到失败的是 GetProcAddress 而不是 Syscall,这可能会让您意识到这一事实。

关于winapi - 在使用 syscall.Syscall 和 WinAPI 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25860325/

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