2

基本的に、現在の言語をトレイ アイコンとして表示するアプリケーションを作成したいと考えています。主に C++ と C# をコーディングできます。Google が私を助けてくれると思いますが、最初にここで質問したいと思います。コミュニティなので、ここでの知識は私が信頼しているものです。

(これまで、システムのそのような部分について議論したことはありません。そのため、コミュニティに質問したいと思います。)

あなたの助けのおかげで、私は2つの方法を発見することができました. DllImportC# でを使用する( をインポートする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;  

アイコンの上にカーソルを合わせると表示されます。ただし、スイッチでは更新されず、レイアウトがトレイ領域にテキストとして表示されません。そのために、「VB.NETでの描画」記事を見つけました。これは、この問題の解決に役立つかもしれません。スイッチ検出について、それは良い質問です。

4

1 に答える 1

3

ユーザーの全体的な UI 言語を取得するには、GetUserDefaultUILanguage.

現在のスレッドの言語を取得するには、GetThreadUILanguageまたはGetThreadLocale.

現在のキーボード入力言語を取得するには、GetKeyboardLayout.

Windows 7 より前の Windows で通知領域アイコンを表示するには、Shell_NotifyIcon. Windows 7 ではShell_NotifyIcon、ユーザーが適切なオプションを設定すれば動作する可能性がありますが、それ以外の場合は別の方法を見つける必要があります。

可能なキーボード入力言語が複数ある場合、ユーザーが無効にしない限り、Windows は現在のキーボード入力言語を言語バーに表示します。ユーザーは言語バーをタスク バーに配置するかもしれませんが、通知領域に配置するのとはまったく同じではありません。

ユーザーが言語を変更したときに通知を受け取りたい場合は、いつ電話して確認WM_SETTINGCHANGEする必要があるかを知らせることができます。SystemParametersInfoもっと良い方法があるかどうかはわかりません。

于 2010-06-22T08:29:19.050 に答える