我想在用户更改Windows 的语言键盘布局(例如从EN 到FR)时向用户显示一条消息。但是我不知道当用户使用任务栏或 ALT+SHIFT 更改它时如何通知我。我应该使用哪个 win32api 函数? 我需要这样的伪代码:
void inputLanguageChanged(char *ln)
{
message("You selected " + ln + " language");
}
最佳答案
这样做的传统方法是处理 WM_INPUTLANGCHANGE
message .但是这种方法有几个问题:
- 它只发送到事件(聚焦)窗口,并且
- it doesn't catch all possible cases, and may not be reliable on modern versions of Windows .
那么,更好的解决方案是实现 ITfLanguageProfileNotifySink
interface , 谁的 OnLanguageChanged
method每当输入语言更改时调用,无论更改方式如何。
但是,我看到您的问题同时带有 C 和 C++ 标签。您可以使用 C 中的 COM,但这确实让人头疼。如果您使用 C++,则要简单得多。如果我需要在 C 程序中完成这项工作,我可能只是想办法让 WM_INPUTLANGCHANGE
为我工作。也许我只是懒惰。
关于c++ - 当用户更改 Windows 中的语言键盘布局时如何得到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17907855/