为了账号安全,请及时绑定邮箱和手机立即绑定

syscall.Syscall 和 WinAPI 有问题

syscall.Syscall 和 WinAPI 有问题

Go
BIG阳 2021-08-16 18:56:44
我正在尝试从 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,这可能会让您知道这个事实。


查看完整回答
反对 回复 2021-08-16
  • 1 回答
  • 0 关注
  • 252 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信