我正在尝试从 Window 的 API 中使用VkKeyScan,但是只要调用该函数,程序就会崩溃。我以这种方式导入和使用的其他 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}
1 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
VkScanKey在 C 中工作,因为它#define大致是这样的:
#ifdef UNICODE
# define VkScanKey VkScanKeyW
#else
# define VkScanKey VkScanKeyA
#endif
所以VkScanKey不是真正的符号 -VkScanKeyW是,这是唯一GetProcAddress可以接受它的形式。如果您一直在进行适当的错误处理,您可能已经注意到GetProcAddress失败而不是Syscall,这可能会让您知道这个事实。
- 1 回答
- 0 关注
- 252 浏览
添加回答
举报
0/150
提交
取消