我正在Windows上用C#开发一个多语言程序
如何在某些操作上更改Windows编写语言...
例如,在焦点事件上从英语更改为阿拉伯语.
谢谢
我有一个winform应用程序,我想在C#中获取当前输入语言的信息.我有windows 10机器,我选择了韩语.在选择韩语后,任务栏中有一个切换按钮可将输入语言更改为英语或韩语.
以下代码总是提供韩语,但是当我选择英语输入时它应该提供英语.
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
static extern uint GetWindowThreadProcessId(IntPtr hwnd, IntPtr proccess);
[DllImport("user32.dll")]
static extern IntPtr GetKeyboardLayout(uint thread);
public Form1()
{
InitializeComponent();
IntPtr foregroundWindow = GetForegroundWindow();
uint foregroundProcess = GetWindowThreadProcessId(foregroundWindow, IntPtr.Zero);
int keyboardLayout = GetKeyboardLayout(foregroundProcess).ToInt32() & 0xFFFF;
CultureInfo info = new CultureInfo(keyboardLayout);
int keyboardLayoutId = info.KeyboardLayoutId;
string name = info.Name;
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方法来获取输入语言信息.
我想在WndProc方法中提供这些信息.
问题总结:所以我想处理当用户切换语言通过切换按钮键入时的情况,当用户通过切换按钮切换语言时,我希望任何wndproc消息或窗口边事件获取语言信息.
我正在查看表单的一些代码,并看到以下内容:
void SomeTextBox_Enter(object sender, EventArgs e)
{
InputLanguage.CurrentInputLanguage = GetLocalLanguage(DataModel.Country);
SomeTextBox.ImeMode = ImeMode.On;
}
Run Code Online (Sandbox Code Playgroud)
如果适用,在哪里GetLocalLanguage()通过InputLanguage.InstalledInputLanguages并返回特定国家/地区.
这段代码的目的是什么?我们为什么要改变输入语言?
我希望能够从C#程序更改操作系统(Windows 7)的区域和语言设置.我并不反对执行命令行命令,但我只是发现了如何启动" 区域和语言"对话框:control /name Microsoft.RegionAndLanguage
这是一个语言本地化问题,其中Controls DateTimePicker只能使用Windows 区域和语言设置(有关详细信息,请参阅此处); 但是,更新操作系统以符合应用程序的语言设置不仅限于此,而且最终是期望的目标.
建议和/或解决方法将不胜感激.