我如何以编程方式知道是否需要在文本框中输入像 '@'
这样的字符并按住 Alt Gr 或 Shift下来?
这是 Alt Gr 的列表:² ³ { [ ] }\@ € ~ | µ
以及更长的 Shift 列表:°!"§$%&/()=?*'>;:_
、字母等
Char.IsUpper(...)
帮我写字母。但是剩下的我该如何解决呢?我希望能够正确地检查它们,如果可能的话,我想让系统为我做。
最后,我将通过 keybd_event
发送这些击键.
(我使用 WinForms。)
最佳答案
我想通了。 VkKeyScan是关键。
(VkKeyScanEx 用于键盘布局等)
部分测试代码:
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern short VkKeyScan(char ch);
static void Main(string[] args)
{
char[] chars = "²³{[]}\\@€~|µ °!`\"§$%&/()=?*'>;:_".ToCharArray();
Console.WriteLine("char\talt\tcontrol\tshift" + Environment.NewLine + "-----------------------------");
for (int i = 0; i < chars.Length; i++)
{
char ch = chars[i];
short vksc = VkKeyScan(ch);
bool alt = (vksc & 1024) == 1024;
bool control = (vksc & 512) == 512;
bool shift = (vksc & 256) == 256;
Console.WriteLine(ch + "\t" + alt + "\t" + control + "\t" + shift);
}
Console.ReadKey();
}
关于c# - 在文本框中输入字符的击键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24527909/