c++ - 当用户更改 Windows 中的语言键盘布局时如何得到通知?

标签 c++ c winapi

我想在用户更改Windows 的语言键盘布局(例如从EN 到FR)时向用户显示一条消息。但是我不知道当用户使用任务栏或 ALT+SHIFT 更改它时如何通知我。我应该使用哪个 win32api 函数? 我需要这样的伪代码:

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

最佳答案

这样做的传统方法是处理 WM_INPUTLANGCHANGE message .但是这种方法有几个问题:

那么,更好的解决方案是实现 ITfLanguageProfileNotifySink interface , 谁的 OnLanguageChanged method每当输入语言更改时调用,无论更改方式如何。

但是,我看到您的问题同时带有 C 和 C++ 标签。您可以使用 C 中的 COM,但这确实让人头疼。如果您使用 C++,则要简单得多。如果我需要在 C 程序中完成这项工作,我可能只是想办法让 WM_INPUTLANGCHANGE 为我工作。也许我只是懒惰。

关于c++ - 当用户更改 Windows 中的语言键盘布局时如何得到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17907855/

相关文章:

c - 如何设置特定 pthread 的 CPU 关联性?

c - C 中的对齐和除法地址变量

winapi - 如何从 Cygwin 程序调用 Win32 API

c++ - 使用 CreateFont() 创建时,Tahoma(MS Shell Dlg 2)字体在 Win7 中看起来被压扁了

c++使用iconv从UTF-8转换为wstring

c++ - 使用 constinit 变量初始化 constexpr 变量

c - 小写windows.h和大写Windows.h的区别?

c++ - 从 OpenGL 切换到 GDI

c++ - 将 cmake 用于具有子/外部项目/依赖项的项目

c++ - 内置 CArray 的 CMap