标签: input-language

即使应用程序没有聚焦,钩子/检测窗口语言也会改变

有没有办法检测即使我的应用程序不在焦点时Windows/OS语言是否发生了变化?
到目前为止,只有在应用程序集中使用时,我才能实现我想要的:

string language = "";
System.Windows.Input.InputLanguageManager.Current.InputLanguageChanged +=
new System.Windows.Input.InputLanguageEventHandler((sender, e) =>
{
    language = e.NewLanguage.DisplayName;
    MessageBox.Show(language);
});
Run Code Online (Sandbox Code Playgroud)

但是你可以理解,这不是我想要的......

我正在考虑其他解决方案,例如挂钩改变语言的键(例如alt + shift)但我无法知道当前使用的是什么语言,用户可以更改默认热键......

非常感谢你的帮助.

c# wpf hook input-language

9
推荐指数
1
解决办法
1866
查看次数

更改其他应用程序的输入语言

我想更改活动窗口的输入语言.问题是活动窗口不是我的应用程序.我知道InputLanguage.CurrentInputLanguage = lang;但它改变了我的WinForms应用程序的语言而不是活动应用程序的语言.

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

我希望按此按钮F1在Notepad中将语言更改为希伯来语,这是我按下F1时的活动应用程序.

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

c# c++ keyboard winapi input-language

5
推荐指数
1
解决办法
1849
查看次数

Delphi:TRichEdit非默认非Unicode系统语言中的文本字符串(ANSI)

所以这是设置:

  1. 使用TRichEdit控件创建一个新的Delphi 7应用程序.我们在这里谈论非Unicode应用程序.
  2. 在Windows的"区域和语言选项"中安装新的输入语言,其编码与非Unicode程序的默认语言编码不同 - 例如希腊语.
  3. 在应用程序中添加一个按钮,并在其OnClick处理程序中添加Button1.Caption := RichEdit1.Text;,并将其设置Font.Charset为刚安装的输入语言的字符集(GREEK_CHARSET如果我们坚持这个例子).
  4. 运行应用程序,切换到新的(希腊语)输入语言,在RichEdit中键入几个字母并按下按钮 - 按钮的标题现在有????符号而不是希腊字符.

  5. 现在,如果您将非Unicode程序的默认语言设置为希腊语(需要重新启动Windows),则此问题将消失 - 希腊字符将正确显示.将非Unicode程序的默认语言设置回原来的状态,然后又出现问题.

所以我猜想TRichEdit在内部使用Unicode,因为更改它的Font.Charset值永远不会改变任何东西 - RichEdit正确接受任何已安装的输入语言,如果你安装了两种使用不同字符集的非拉丁语言(希腊/ GREEK_CHARSET/和俄语/ RUSSIAN_CHARSET/例如)它会接受它们而不改变它的Font.Charset.

我还猜想当你得到TRichEdit 的.Text(或.Lines[i])值时,它会根据Windws的非Unicode程序默认语言将其内部Unicode文本转换为ANSI .

此外,将.Text值分配给WideString或UnicodeString也无法正常工作(文本再次出现????而不是正确的字符),它不仅在您将其分配给String(AnsiString)时.

所以这就是问题:

我希望能够根据我选择的字符集正确地将RichEdit的文本转换为字符串(ANSI),而不是系统的非Unicode程序默认语言.我怎样才能做到这一点?我更喜欢不涉及第三方组件的解决方案,当然,如果不可能的话 - 任何事情都可以.

谢谢!

PS:切换到Delphi 2009或更高版本是不可接受的解决方案.

delphi richedit delphi-7 input-language

4
推荐指数
1
解决办法
2174
查看次数

更改InputLanguage不起作用WPF

我在WPF中遇到OSK问题。我通过InputLanguageManager更改InputLanauage,如下所示:

InputLanguageManager.SetInputLanguage(_targetKeyboardWindow, CultureInfo.CreateSpecificCulture("ru"));
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。我需要更改应用程序的实际视图(通过单击后退按钮),然后在InputLanguageManager中所做的更改开始起作用。但是,当我尝试在更改输入语言后从代码隐藏中更改视图时,它不起作用。

此外,在调试器中,我可以看到更改语言后,当前语言仍然是默认语言(以前的语言)

任何的想法?

wpf input-language

3
推荐指数
1
解决办法
1637
查看次数

Keyboard layout doesn't appear in Languages & Inputs

So one day, no idea how it happened, my windows 10 PC added "English UK" to the keyboard layouts list. I already had "English US". So now, when I Alt+Shift through the layouts I have both US and UK layouts. Later, "English INTL" was added too. So now i my keyboard layouts looks like this: 键盘布局

The problem is, both these added layouts don't appear in the Language settings in the control panel:

语言设定

How is this possible and how can I …

windows keyboard-layout input-language windows-10

3
推荐指数
1
解决办法
2808
查看次数