VkKeyScanEx/Sendinput替代unicode?我正在尝试发送一个字符。因此,我使用位于user32.dll中的本地方法GetKeyboardLayout和VkKeyScanExW来获取系统当前键盘布局的虚拟键码(以及shift和控制状态)。然后,我使用user32.dll的本机方法SendInput将此虚拟键码发送到应用程序。一切都很好-除了欧元符号。当我将此字符作为参数传递给VkKeyScanExW时,它返回-1,这意味着未找到。在我的键盘上使用Ctrl+Menu+E(德语布局)导航现在我假设这是因为欧元符号是一个unicode符号并且没有映射到ascii布局中。我读到Sendinput还允许使用硬件扫描码的unicode模式。所以我希望使用SendInput的unicode模式来解决我的问题。但我想我的虚拟代码不是硬件扫描码,因为unicode范围更广。我在哪里可以找到如何通过SendInput将unicode字符(例如)发送到另一个控件/窗口的示例。MSDN和pinvoke.net不提供有用的示例。同时,我使用SendInput的unicode参数解决了这个问题。现在我不需要再使用VkKeyScan-我可以直接传递角色本身。privatestaticvoidSendUnicodeChar(charinput){varinputStruct=newNativeWinApi.Input();inputStruct.type=NativeWinApi.INPUT_KEYBOARD;inputStruct.ki.wVk=0;inputStruct.ki.wScan=输入;inputStruct.ki.time=0;varflags=NativeWinApi.KEYEVENTF_UNICODE;inputStruct.ki.dwFlags=标志;inputStruct.ki.dwExtraInfo=NativeWinApi.GetMessageExtraInfo();NativeWinApi.Input[]ip={inputStruct};NativeWinApi.SendInput(1,ip.Size,Marshal(inputStruct));感谢所有的帮助。以上就是C#学习教程:VkKeyScanEx/Sendinputinsteadofunicode?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
