将字符转换为键

use*_*444 7 c# key char special-characters

我有一个特殊的字符(/ @)我想转换为Keys.

我目前正在使用这个:

Keys k = (Keys)'/';
Run Code Online (Sandbox Code Playgroud)

在调试时,我得到k等于:

LButton | RButton | MButton | 返回| 空间类型 - System.Windows.Forms.Keys

k的键码假设是111.

注意:代码适用于大写字母,例如:

Keys k = (Keys)'Z';
Run Code Online (Sandbox Code Playgroud)

在这种情况下,k的密钥代码是90,这没关系.

我正试图找到一种方法将特殊字符转换为键.(或正确的密钥代码)

尝试使用以下方式全局发送密钥:

public static void SendKey(byte keycode)
    {
        const int KEYEVENTF_EXTENDEDKEY = 0x1;
        const int KEYEVENTF_KEYUP = 0x2;
        keybd_event(keycode, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
        keybd_event(keycode, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0);
    }

SendKey((byte)Keys.{SomethingHere});
Run Code Online (Sandbox Code Playgroud)

Van*_*dze 16

这是个老问题,但我用过这个:

Keys k = (Keys)char.ToUpper(c);
Run Code Online (Sandbox Code Playgroud)

如果char值为a(带代码97),则转换为A(带代码65)映射到Keys.A等等......

希望这会对某人有所帮助.


pli*_*nth 3

您无法从 char 转换为 Keys。Keys 是一个标志枚举,表示在键盘上按下了哪些物理键。您正在尝试的问题可能不是一个容易解决的问题。谁能说出用户使用的键盘以及什么映射在用户的键盘及其区域设置上生成什么特定字符?

您能更具体地说明您的目标吗?您是否想教用户如何键入特殊字符或其他字符?

根据您的更新,您应该使用SendKeys类。