WinAPI Как получить раскладку клавиатуры консольного приложения - PullRequest
0 голосов
/ 05 октября 2018

Как узнать текущую раскладку клавиатуры в консольном окне с указанным дескриптором окна?

Для окна с графическим интерфейсом это возможно через:

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

Но этот подходне работает для консольных окон.

После некоторого google'ing я получил следующие результаты:

  1. Начиная с Win7, можно получить раскладку клавиатуры для консольного приложения.из conhost.exe процесса, который является дочерним процессом cmd.exe.Немного более подробной информации можно найти здесь:
    https://autohotkey.com/board/topic/43043-get-current-keyboard-layout/

  2. Но в этом вопросе:
    c ++, как мне получить текущий процесс консоли conhost Я нашелкомментарий @RaymondChen о том, что conhost.exe - это деталь реализации, которая может отсутствовать в некоторых версиях Windows.

Таким образом, нестандартный обходной путь представляется возможным.Но есть ли какой-нибудь стандартный, совместимый способ получить правильный результат?

PS, подобный вопрос задается здесь:
GetKeyboardLayout () в некоторых случаях не работает должным образом
Но он не имеет ответа на мой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...