我尝试从 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
}
Run Code Online (Sandbox Code Playgroud)
VkScanKey在 C 中工作,因为它\xe2\x80\x99s #defined大致如下:
#ifdef UNICODE\n# define VkScanKey VkScanKeyW\n#else\n# define VkScanKey VkScanKeyA\n#endif\nRun Code Online (Sandbox Code Playgroud)\n\n那么VkScanKey\xe2\x80\x99t 是真正的符号\xe2\x80\x94VkScanKeyW吗?\xe2\x80\x99s 是唯一GetProcAddress可以接受它的形式。如果您一直在进行正确的错误处理,您可能已经注意到GetProcAddress失败了而不是Syscall,这可能会让您意识到这一事实。
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |