大佬教程收集整理的这篇文章主要介绍了windows – SendInput()和非英文字符和键盘布局,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试使用KEYEVENTF_UNICODE调用Sendinput():
KEYBDINPUT ki; INPUT input; int character = 0; ki.wVk = 0; ki.wScan = character; ki.dwFlags = KEYEVENTF_UNICODE; ki.time = 0; ki.dwExTrainfo = 0; input.type = INPUT_KEYBOARD; input.ki = ki; SendInput(1,&input,sizeof(INPUT));
这实际上是有效的(当然,在我的代码中,我也在键下来之后做一个KEYUp)…除了在GTK应用程序中(可能还有其他实例,它也不起作用).
根据MSDN,如果指定了KEYEVENTF_UNICODE,则SendInput将WM_KEYDOWN或WM_KEYUP消息发送到前台线程的消息队列,其中wParam等于VK_PACKET. Getmessage或Peekmessage获取此消息后,将消息传递给Translatemessage会发布带有最初由wScan指定的Unicode字符的WM_CHAR消息.如果将此Unicode字符发布到ANSI窗口,则会自动将其转换为相应的ANSI值.
所以我相信当传递KEYEVENTF_UNICODE时,Sendinput()的功能是不同的……不像通常那样低级.
对于我的生活,我无法想出任何其他方法来让Sendinput()正确打印出用户键盘语言的字符.例如,如果键盘输入语言是“瑞典语”,我不能让它输出’@'(相反,它打印出一个引号),我不能让它输出非正确的ASCII字符,要么(重音字母等).
提前致谢.
以上是大佬教程为你收集整理的windows – SendInput()和非英文字符和键盘布局全部内容,希望文章能够帮你解决windows – SendInput()和非英文字符和键盘布局所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。