سؤال

في الأساس ، أريد أن أكتب تطبيقًا يعرض اللغة الحالية كأيقونة علبة. بشكل رئيسي يمكنني رمز 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 للتأكد. لست متأكدًا مما إذا كانت هناك طريقة أفضل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top