c# - 更改另一个应用程序的输入语言

标签 c# c++ winapi keyboard input-language

我想更改事件窗口的输入语言。 问题是事件窗口不是我的应用程序。 我知道 InputLanguage.CurrentInputLanguage = lang; 但它会更改我的 WinForms 应用程序的语言,而不是事件应用程序的语言。

总结:我的情况是我的程序监听任何键盘事件(即使当 它没有聚焦)并在我按下 F1 时执行代码。

我希望按 F1 将记事本中的语言更改为希伯来语,记事本是我按 F1 时激活的应用程序。

我对低级解决方案或高级解决方案感兴趣。

最佳答案

您应该知道另一个应用程序的hWnd 并为其发布消息

    public void InputLangChangeRequest(IntPtr hwnd, InputLanguage language)
    {
        IntPtr handle = InputLanguage.Handle;
        PostMessage(hwnd, WM_INPUTLANGCHANGEREQUEST, IntPtr.Zero, handle);
    }

关于c# - 更改另一个应用程序的输入语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10056637/

相关文章:

c# - 达到最大连接池

c# - OpenCvSharp PCA 异常 : Unsupported combination of input and output array formats

c++ - 在 C++ 中重载 -> 运算符

winapi - MFCreateAudioRenderer所需的带有Guid 1082E6C2-7660-4945-8E78-228A3B3329F6的怪异属性

windows - CloseWindow和WM_CLOSE是什么关系

c# - Debugger Canvas - 与 Visual Studio 2013/2015 兼容的类似插件

c# - 在 new Thread() 中创建控件时在正确的线程上调用方法

c++ - WinAPI C++ : Reprogramming Window Resize

c++ - 如何使用 shared_ptr 作为 COM 接口(interface)指针

c++ - 了解哪款显示器在 Windows 10 上具有触摸功能