WinAPI如何获取控制台应用程序的键盘布局

时间:2018-10-05 16:14:20

标签: c++ windows winapi

如何知道具有提供的窗口句柄的控制台窗口的当前键盘布局?

对于GUI窗口,可以通过以下方式实现:

const auto threadId = ::GetWindowThreadProcessId(hwnd, nullptr);
const auto hkl = ::GetKeyboardLayout(idThread);

但是这种方法不适用于控制台窗口。

经过google搜索后,我得到了以下结果:

  1. 从Win7开始,可以从conhost.exe的子进程cmd.exe接收控制台应用程序的键盘布局。可以在此处找到更多详细信息:
    https://autohotkey.com/board/topic/43043-get-current-keyboard-layout/

  2. 但是在这个问题上:
    c++ how do i get the current console conhost process 我发现来自@RaymondChen的评论是conhost.exe-是一个实现细节,在某些Windows版本中可能不存在。

因此,非标准的解决方法似乎是可能的。 但是,是否有任何标准的兼容方法来获得正确的结果?

PS,这里问类似的问题:
GetKeyboardLayout() doesn't work properly in some cases
但是我的问题没有答案。

0 个答案:

没有答案