Ale*_*iuk 6 c++ windows winapi
如何知道提供了窗口句柄的控制台窗口的当前键盘布局?
对于 GUI 窗口,可以通过以下方式:
const auto threadId = ::GetWindowThreadProcessId(hwnd, nullptr);
const auto hkl = ::GetKeyboardLayout(idThread);
Run Code Online (Sandbox Code Playgroud)
但这种方法不适用于控制台窗口。
经过一番谷歌搜索后,我得到了以下结果:
从 Win7 开始,控制台应用程序的键盘布局可以从进程接收conhost.exe,该进程是cmd.exe. 更多细节可以在这里找到:
https://autohotkey.com/board/topic/43043-get-current-keyboard-layout/
但在这个问题中:
c++ how do i get the current console conhost process
我发现了 @RaymondChen 的评论conhost.exe- 是一个实现细节,在某些 Windows 版本中可能不存在。
因此,非标准解决方法似乎是可能的。但是否有任何标准的、兼容的方法来获得正确的结果呢?
PS,这里提出了类似的问题:
GetKeyboardLayout() 在某些情况下无法正常工作
但它对我的问题没有答案。