عرض تخطيط اللغة الحالي في ترايبار
-
29-09-2019 - |
سؤال
في الأساس ، أريد أن أكتب تطبيقًا يعرض اللغة الحالية كأيقونة علبة. بشكل رئيسي يمكنني رمز C ++ و C#. أعتقد أن Google ستساعدني ولكن أود أن أسألها هنا أولاً ، لأن المجتمع ، المعرفة هنا هي شيء أثق به.
(لا تتجول أبدًا مع مثل هذه الأجزاء من النظام حتى الآن. ولهذا السبب أود أن أسأل المجتمع.)
حسنًا ، شكرًا لمساعدتكم ، تمكنت من اكتشاف طريقتين. باستخدام DllImport
في C# (استيراد user32.dll
) و ال InputLanguage
.
وجدت مقتطف:
public void SetNewCurrentLanguage() {
// Gets the default, and current languages.
InputLanguage myDefaultLanguage = InputLanguage.DefaultInputLanguage;
InputLanguage myCurrentLanguage = InputLanguage.CurrentInputLanguage;
textBox1.Text = "Current input language is: " + myCurrentLanguage.Culture.EnglishName + '\n';
textBox1.Text += "Default input language is: " + myDefaultLanguage.Culture.EnglishName + '\n';
// Changes the current input language to the default, and prints the new current language.
InputLanguage.CurrentInputLanguage = myDefaultLanguage;
textBox1.Text += "Current input language is now: " + myDefaultLanguage.Culture.EnglishName;
}
طبقت هذا مثل ما يلي:
InputLanguage myCurrentLanguage = InputLanguage.CurrentInputLanguage;
notifyIcon.Text = myCurrentLanguage.LayoutName + '\n' + myCurrentLanguage.Culture.DisplayName;
هذا يعرضه إذا قمت بحومه فوق الرمز. ومع ذلك ، لن يتم تحديثه على Switch ، ولا يُظهر التصميم كنص في منطقة الدرج. لذلك ، وجدت "الرسم في vb.net"مقال ، ربما سيساعدني هذا على تحديد هذه المسألة. حول المفتاح اكتشف ، هذا سؤال جيد.
المحلول
للحصول على لغة واجهة المستخدم بشكل عام للمستخدم ، GetUserDefaultUILanguage
.
للحصول على لغة الموضوع الحالي ، GetThreadUILanguage
أو GetThreadLocale
.
للحصول على لغة إدخال لوحة المفاتيح الحالية ، GetKeyboardLayout
.
لعرض أيقونة منطقة الإخطار في Windows قبل Windows 7 ، Shell_NotifyIcon
. في Windows 7 Shell_NotifyIcon
قد لا يزال يعمل إذا قام المستخدم بتعيين الخيارات المناسبة ، ولكن عليك أن تجد طريقة أخرى.
إذا كان لديك أكثر من لغة إدخال لوحة مفاتيح واحدة ، فإن Windows يعرض بالفعل لغة إدخال لوحة المفاتيح الحالية في شريط اللغة ما لم يعلق المستخدم ذلك. قد يضع المستخدم شريط اللغة في شريط المهام ، على الرغم من أنه ليس هو نفسه تمامًا في منطقة الإخطار.
إذا كنت ترغب في تلقي إشعارات عندما يغير المستخدم لغة ما ، WM_SETTINGCHANGE
قد نعلمك متى يجب عليك الاتصال SystemParametersInfo
للتأكد. لست متأكدًا مما إذا كانت هناك طريقة أفضل.