1

Тема: AHK: язык в системе

Добрый день, каким образом можно узнать нынешний язык ввода? Есть переменная A_Language, но она показывает лишь язык по умолчанию.

2

Re: AHK: язык в системе

F11::
	WinGet, WinID,, A
	ThreadID := DllCall("GetWindowThreadProcessId", UInt, WinID, UInt, 0)
	InputLocaleID := DllCall("GetKeyboardLayout", UInt, ThreadID, UInt)
	ToolTip, % InputLocaleID & 0xFFFF = 0x409 ? "En" : InputLocaleID & 0xFFFF = 0x419 ? "Ru" : "Другой"
	Sleep, 400
	ToolTip
	Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: язык в системе

Благодарю, но я немного запутался: какое значение имеет на выходе InputLocaleID, и что с ней надо сделать

4

Re: AHK: язык в системе

Ничего делать не надо, просто посмотреть на ToolTip вблизи курсора.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: язык в системе

Я просто хочу в своем скрипте это использовать.

кхм.. и изменяется ли ThreadProcessID c течением времени, или можно однажды получить его в шапке?

6

Re: AHK: язык в системе

Если InputLocaleID & 0xFFFF = 0x409 — английский, если InputLocaleID & 0xFFFF = 0x419 — русский. Для одного и того же окна ThreadProcessID не изменяется.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: язык в системе

Спасибо, разобрался