右alt键的Sendkeys.Send()?任何替代方案

本文关键字:任何替 方案 alt 键的 Sendkeys Send | 更新日期: 2023-09-27 18:25:09

我正在开发一款用于触摸屏显示器的winform应用程序。该应用程序由一个网络浏览器和一个屏幕键盘组成。我拥有我所需要的一切,但我面临的问题是有两种输入语言,英语和韩语。任何熟悉使用两种语言的人都可以告诉你,正确的alt键用于在语言之间来回切换。我需要模拟这个按键,但我找不到任何东西。

我已经找到了模拟左/右shift键和左/右ctrl键的方法。但对于左/右alt键没有任何内容。

我还有别的选择吗?

右alt键的Sendkeys.Send()?任何替代方案

您可以将keybd_eventRALT键代码VK_RMENU一起使用。完整的密钥代码列表在这里

你必须像这样p/Invoke击键:

[DllImport("user32.dll", SetLastError = true)] 
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);  
public const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key down flag 
public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag 
public const int VK_RMENU = 0xA5;
keybd_event(VK_RMENU, 0, KEYEVENTF_EXTENDEDKEY, 0); 
keybd_event(VK_RMENU, 0, KEYEVENTF_KEYUP, 0); 

您不需要模拟Alt+Shift键来更改输入语言。您可以在System.Windows.Forms命名空间中使用InputLanguage类:

        var currentLang = InputLanguage.CurrentInputLanguage;
        var installedLangs = InputLanguage.InstalledInputLanguages;
        if (installedLangs.Count > 1)
            InputLanguage.CurrentInputLanguage =
                installedLangs[1 - installedLangs.IndexOf(currentLang)];

当您正好安装了两种输入语言时,此代码片段会在这两种语言之间切换。你明白了。正确的

您真的不想找到发送Alt键的方法,对吧?你真正想要的是能够更改输入语言。在这种情况下,请直接查找来源。

Windows API具有更改当前活动键盘布局的方法。它们不是.NET框架的一部分,但您可以使用P/Invoke从C#调用它们。

ActivateKeyboardLayout的MSDN文档在这里。

p/Invoke签名可以在这里找到。

MSDN为right-alt提供了RMenu枚举条目。
相关文章: