6

ユーザーが Windows の言語キーボード レイアウトをENから FRに変更したときに、ユーザーにメッセージを表示したいと考えています。ALTしかし、ユーザーがタスクバーまたは+を使用して変更したときに、どのように通知を受けることができるかわかりませんSHIFT。どの win32api 関数を使用すればよいですか? この疑似コードのようなものが必要です:

void inputLanguageChanged(char *ln)
{
  message("You selected " + ln + " language");
}
4

2 に答える 2

9

これを行う従来の方法は、WM_INPUTLANGCHANGEメッセージを処理することでした。しかし、この方法にはいくつかの問題があります。

したがって、より良い解決策は、入力言語が変更された方法に関係なく、入力言語が変更されるたびにメソッドが呼び出されるITfLanguageProfileNotifySinkinterfaceを実装することです。OnLanguageChanged

ただし、あなたの質問には C と C++ の両方のタグが付けられているようです。C から COM を使用することはできますが、これは本当に面倒なことです。C++ を使用している場合は、はるかに簡単です。この作業を C プログラムで行う必要がある場合は、おそらく自分でWM_INPUTLANGCHANGE作業する方法を見つけるだけです。多分私は怠け者です。

于 2013-07-28T12:38:16.750 に答える