I am looking for a way to convert the value of a string to the equivalent System.Windows.Forms.Keys item. Then this value will be used with PressKey to simulate the corresponding Key. I tried using the KeyConverter like this:
[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
public static void PressKey(System.Windows.Forms.Keys key, bool up)
{
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;
if (up)
{
keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0);
}
else
{
keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
}
}
KeyConverter kc = new KeyConverter();
PressKey((System.Windows.Forms.Keys)kc.ConvertFromString(string), false);
What I need is a string like "Enter" to be converted to System.Windows.Forms.Keys.Enter. But KeyConverter is not returning anything. Any thoughts?
Use
Enum.Parseto convert a string into the corresponding enumeration value:Note that
Enum.Parsewill throw anArgumentExceptionif the key string is not in the enumeration. If you don’t want that, useEnum.TryParseinstead, which returns a bool indicating if the conversion was successful.