Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用SendInput发送斯堪的纳维亚信件_C#_Sendinput - Fatal编程技术网

C# 如何使用SendInput发送斯堪的纳维亚信件

C# 如何使用SendInput发送斯堪的纳维亚信件,c#,sendinput,C#,Sendinput,我正在尝试创建一个虚拟键盘,它使用SendInput方法模拟键盘,如下所示: public static void SendKeyDown(System.Windows.Forms.Keys key) { INPUT k = new INPUT(); k.type = (int)InputType.INPUT_KEYBOARD; k.ki.wVk = (short)key;

我正在尝试创建一个虚拟键盘,它使用SendInput方法模拟键盘,如下所示:

        public static void SendKeyDown(System.Windows.Forms.Keys key)
        {
            INPUT k = new INPUT();
            k.type = (int)InputType.INPUT_KEYBOARD;
            k.ki.wVk = (short)key;
            k.ki.dwFlags = (int)KEYEVENTF.KEYDOWN;
            k.ki.dwExtraInfo = GetMessageExtraInfo();

            SendInput(1, new INPUT[] { k }, Marshal.SizeOf(k));
        }
但我在钥匙计数中找不到斯堪的纳维亚字母Ä、Ö和Å。如何使用SendInput方法发送这些信件?

我自己找到了解决方案:

Oem3=ö,Oem7=ä,Oem6=å

我自己找到了解决方案:


Oem3=ö、Oem7=ä、Oem6=å

您可以使用
KEYEVENTF_Unicode
发送Unicode字符

k.type = (int)InputType.INPUT_KEYBOARD;
k.ki.wScan = 'ö';
k.ki.wVk = 0;
k.ki.dwFlags = (int)KEYEVENTF.UNICODE | (int)KEYEVENTF.KEYDOWN;
k.ki.dwExtraInfo = GetMessageExtraInfo();
这比使用
Oem3
等解决方案更具可移植性,Oem3等解决方案的指定字符会根据应用程序执行平台的文化而有所不同


(其余的p/Invoke签名可以在my other中找到。)

您可以使用
KEYEVENTF\u Unicode
发送Unicode字符

k.type = (int)InputType.INPUT_KEYBOARD;
k.ki.wScan = 'ö';
k.ki.wVk = 0;
k.ki.dwFlags = (int)KEYEVENTF.UNICODE | (int)KEYEVENTF.KEYDOWN;
k.ki.dwExtraInfo = GetMessageExtraInfo();
这比使用
Oem3
等解决方案更具可移植性,Oem3等解决方案的指定字符会根据应用程序执行平台的文化而有所不同


(其余的p/Invoke签名可以在我的其他签名中找到。)

你是一名计算机程序员:编写一个程序来回答你的问题。编写一个表单来处理KeyDown事件并显示KeyEventArgs.KeyCode属性,按下键,看看会发生什么。耶!我怎么没想到呢!?!谢谢!:)正确的答案是:Oem3=ö,Oem7=ä,Oem6=å现在,记住,只有当你的客户拥有与你相同的键盘时,这些代码才有效。“OEM”指“原始设备制造商”;键盘制造商可以决定键绑定是什么。你是一名计算机程序员:编写一个程序来回答你的问题。编写一个表单来处理KeyDown事件并显示KeyEventArgs.KeyCode属性,按下键,看看会发生什么。耶!我怎么没想到呢!?!谢谢!:)正确的答案是:Oem3=ö,Oem7=ä,Oem6=å现在,记住,只有当你的客户拥有与你相同的键盘时,这些代码才有效。“OEM”指“原始设备制造商”;键盘制造商可以决定键绑定是什么。请注意,当使用
KEYEVENTF\u UNICODE
时,
wScan
是一个UTF-16编码单元。如果要发送需要UTF-16代理项对的Unicode码点(
o
不需要),则必须发送两个事件,一个事件对应于该对的每个代码单元。请注意,在使用
KEYEVENTF\u Unicode
时,
wScan
是UTF-16代码单元。如果要发送需要UTF-16代理项对的Unicode码点(
ö
不需要),则必须发送两个事件,该对的每个码单元一个事件。