1

Тема: AHK: Как узнать язык окна и задать его в переменную

Задача: если в окне язык английский, то переменная Х должна равняться 2, если язык стал русский, то Х=1. Проверка должна быть каждую милисекунду. Как это сделать?

2

Re: AHK: Как узнать язык окна и задать его в переменную

Каждую миллисекунду — слишком часто. Определить язык активного окна можно так:


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

3 (изменено: Странникх, 2014-05-04 08:39:54)

Re: AHK: Как узнать язык окна и задать его в переменную

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

Что-то не так.. Можете отослать код с комментариями, чтобы разобраться в нем?

4

Re: AHK: Как узнать язык окна и задать его в переменную

Присвоение InputLocaleID у Вас за циклом.
Получается, что язык определяется один раз, а потом каждые 100 мс проверяется, что за язык.

5

Re: AHK: Как узнать язык окна и задать его в переменную

Да, весь код надо в цикл.

6

Re: AHK: Как узнать язык окна и задать его в переменную

Спасибо за ответы. Всё отлично работает.