WPF 获得当前输入法语言区域

原文:WPF 获得当前输入法语言区域

本文告诉大家如何获得 WPF 输入法的语言区域

需要使用 user32 的方法,很简单,请看下面

       [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 CultureInfo GetCurrentKeyboardLayout()
        {
            try
            {
                IntPtr foregroundWindow = GetForegroundWindow();
                uint foregroundProcess = GetWindowThreadProcessId(foregroundWindow, IntPtr.Zero);
                int keyboardLayout = GetKeyboardLayout(foregroundProcess).ToInt32() & 0xFFFF;
                return new CultureInfo(keyboardLayout);
            }
            catch (Exception)
            {
                return new CultureInfo(1033); // Assume English if something went wrong.
            }
        }

因为没有提供语言区域变化的事件,所以需要自己写一个循环来获取

在界面添加一个 TextBlock 请看下面

    <Grid>
        <TextBlock x:Name="CeareamearTreseretal" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
    </Grid>

这样可以在后台代码给一个值

        private async void HairjurNalllairmo()
        {
            while (true)
            {
                await Task.Delay(100);
                CeareamearTreseretal.Text = GetCurrentKeyboardLayout().DisplayName;
            }
        }

这时修改语言区域就可以看到变化

参见 C#: Get current keyboard layout\input language



本文会经常更新,请阅读原文:
https://lindexi.gitee.io/lindexi/post/WPF-%E8%8E%B7%E5%BE%97%E5%BD%93%E5%89%8D%E8%BE%93%E5%85%A5%E6%B3%95%E8%AF%AD%E8%A8%80%E5%8C%BA%E5%9F%9F.html
,以避免陈旧错误知识的误导,同时有更好的阅读体验。


本作品采用
知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:
https://lindexi.gitee.io
),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请
与我联系

原文地址:https://www.cnblogs.com/lonelyxmas/p/10218500.html

时间: 2025-01-17 15:58:20

WPF 获得当前输入法语言区域的相关文章

C# WPF获取任务栏时间区域的Rectangle

原文:C# WPF获取任务栏时间区域的Rectangle [StructLayout(LayoutKind.Sequential)] public struct WindowRect { public int left; public int top; public int right; public int bottom; } [DllImport("user32.dll")] private static extern IntPtr FindWindow(string ClassN

WPF与中文输入法兼容性问题的解决方案

问题 我在使用WPF进行编程的时候,发现的一个最大问题就是WPF与中文输入法的兼容性问题. 出现的问题大概分为两种: 程序崩溃: 无法切换输入法. 在笔者的环境中并未遇到过崩溃的情况,只是后一种情况.但我想这两种情况的原因应该一样. 具体的表现为:在WPF中的Textbox控件中输入汉字的时候,我们需要先切换输入法.切换之后状态栏显示切换成功,而开始键入拼音的时候却发现直接将拼音输入了Textbox框中,情形好似并未切换成功. 而且更为棘手的是,这种情况并不是绝对的,重启程序和多次切换输入法都可

Android默认输入法语言的修改以及SettingsProvider作用

Android源码中默认的有三种输入法:英文,中文,日文.对应的工程代码路径为:<android_root>/packages/inputmethods/LatinIME/<android_root>/packages/inputmethods/OpenWnn/<android_root>/packages/inputmethods/PinyinIME/ 一般情况下,默认都是选择的LatinIME输入法,但是Android系统默认都是选择系统语言作为输入法,比如我们要用

[FAQ12214] 默认输入法及默认输入法语言FAQ汇总

如何修改默认输入法 请参考FAQ04327 如果按照FAQ04327修改之后不成功,JBX版本请参考FAQ06663,KKX版本请先参考FAQ12213,如果没有FAQ12213中的内容请参考FAQ06663. 如何实现把多个第三方输入法转换为系统输入法,并且在输入法设置时候勾选框默认是勾选的,请参考FAQ08909 Latin输入法怎么默认勾选几种语言,请参考FAQ06649. Latin输入法如何添加删除某些语言的输入法,请参考FAQ08884 如何添加一个新的Latin输入法语言,请参考F

如何实现wpf的多国语言

http://www.cnblogs.com/horan/archive/2012/04/20/wpf-multilanguage.html 4.0版本的locbaml http://michaelsync.net/2010/03/01/locbaml-for-net-4-0 使用visual studio的msbuild切换目录

项目笔记---WPF多语言方案

近期由于朋友邀请帮忙给一个开源的游戏“外挂”做一个I18N的解决方案,恰好也是WPF做的,之前有过相关经验,就忙了一个星期终于搞定了,已经提交给作者了,现在这里做一个分享. 这里分享下我个人Fork的GitHub地址: https://github.com/Cuiyansong/Hearthstone-Deck-Tracker 什么是I18N 简单来说就是多语言,为什么多语言叫I18N,请参见结语中的引用. 如何实现 其实WPF上实现多语言于winform有些相似,就是更换软件运行时资源(Res

C#语言基础原理及优缺点

一.原理: C#是专门为.net程序框架而创造的语言. .net框架有ms的.netFramework:Mono的.NetFramework(也是符合.net IL语言,CTS规范,CLS规范, CLR运行时库),mono程序可以运行在各种操作系统和游戏平台中运行(目前mono还不够成熟影响力较小). .net原理主要是编译的原理: IL中间语言, CLR运行时环境. .net程序组成体系主要概念:应用程序集,应用程序域. .net程序编译过程: 1)编译时:.netvs或mono编译器(或其它

解析大型.NET ERP系统 多国语言实现

实现多国语言有许多种实现方案,无外乎是一种字符串替换技术,将界面控件的文本标签替换成相应语言的文字..NET Windows Forms实现多国语言的方法有以下几种: 1 .NET的方案,使用资源文件 分别做三个语言的资源文件,比如String.resx,String.zh-cn.resx,String.zh-tw.resx,编译程序集,运行时用下面的代码设置程序的语言区域. string languageName="zh-cn"; Thread.CurrentThread.Curre

android 输入法,里面还集成语音输入

<?xml version="1.0" encoding="utf-8"?> <com.example.android.softkeyboard.LatinKeyboardView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/keyboard" android:layout_alignParentBot