Тема: AHK: Как узнать язык окна и задать его в переменную
Задача: если в окне язык английский, то переменная Х должна равняться 2, если язык стал русский, то Х=1. Проверка должна быть каждую милисекунду. Как это сделать?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Задача: если в окне язык английский, то переменная Х должна равняться 2, если язык стал русский, то Х=1. Проверка должна быть каждую милисекунду. Как это сделать?
Каждую миллисекунду — слишком часто. Определить язык активного окна можно так:
hWnd := WinExist("A")
ThreadID := DllCall("GetWindowThreadProcessId", "Ptr", hWnd, "UInt", 0, "Ptr")
InputLocaleID := DllCall("GetKeyboardLayout", "Ptr", ThreadID, "Ptr")
If (InputLocaleID = 0x4090409)
X = 2
Else If (InputLocaleID = 0x4190419)
X = 1
Else
X = 0
hWnd := WinExist("A")
ThreadID := DllCall("GetWindowThreadProcessId", "Ptr", hWnd, "UInt", 0, "Ptr")
InputLocaleID := DllCall("GetKeyboardLayout", "Ptr", ThreadID, "Ptr")
Loop
{
sleep, 100
If (InputLocaleID = 0x4090409)
X = 2
Else If (InputLocaleID = 0x4190419)
X = 1
Else
X = 0
}
return
1::
MsgBox, X = %X%
returnЧто-то не так.. Можете отослать код с комментариями, чтобы разобраться в нем?
Присвоение InputLocaleID у Вас за циклом.
Получается, что язык определяется один раз, а потом каждые 100 мс проверяется, что за язык. ![]()
Да, весь код надо в цикл.
Спасибо за ответы. Всё отлично работает.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться