我一直在这里看,但是通常的问题是“如何将virtualkey转换为char”。 所以我需要问如何将char转换为virtualkeycode? p>
我可以很好地使用F1,Ctrl等,但是却不知道如何以某种方便的方式将A转换为VK_A等。
我正在尝试让外部配置文件保存一些变量,然后这些变量必须在实际应用中用作虚拟键码。
我可以识别像
这样的货币对 Alt+F2, Shift+Control+F1 ... etc.
因为它们只是枚举0-12,然后是VirtualKeyCode.F1 +索引
但是我不知道这些
Alt+F, Shift+Control+A ... etc.
我可能缺少了一些非常简单的内容,但不幸的是我看不到它。
谢谢
感谢您的帮助,我现在可以使用这段代码将“ Ctrl + X”或“ Shift-A”转换为VirtualKeyCode(仍然更像是测试代码)
public static void ParseKeys(string text)
{
Key key = 0;
Key mod = 0;
int current = 0;
string[] result;
string[] separators = new string[] { "+", "-" };
result = text.Split(separators, StringSplitOptions.RemoveEmptyEntries);
foreach (string entry in result)
{
if (entry.Trim() == Keys.Control.ToString() || entry.Trim() == "Ctrl")
mod = Key.LeftCtrl;
if (entry.Trim() == Keys.Alt.ToString())
mod = Key.LeftAlt;
if (entry.Trim() == Keys.Shift.ToString())
mod = Key.LeftShift;
if (entry.Trim() == Keys.LWin.ToString() && current != result.Length - 1)
mod = Key.LWin;
current++;
}
KeysConverter keyconverter = new KeysConverter();
key = (Key)keyconverter.ConvertFrom(result.GetValue(result.Length - 1));
var vmod = KeyInterop.VirtualKeyFromKey(mod);
System.Diagnostics.Trace.WriteLine((VirtualKeyCode)vmod + " = " + (VirtualKeyCode)key);
}
用法
ParseKeys("Alt+X");
我发现我需要处理“ Alt + Ctrl + X”或“ Ctrl + X + Q”之类的组合,但实际上此代码适用于A + B组合。最后有人可以提出一些优雅的解决方案吗?
VirtualKeyCode[] outsequence = { VirtualKeyCode.A , VirtualKeyCode.B, VirtualKeycode.C }
? 谢谢!