1

Тема: AHK v2: Как отловить переключение раскладки клавиатуры

Как это сделать без использования таймера, на событиях windows?
Скажем, я хочу сделать свой простой индикатор текущего языка в виде флагов в трее. Чтобы отслеживался факт изменения языка - хоть пользователь нажал сочетание клавиш, хоть PuntoSwitcher сработал и т.п. ИИ выдает вроде осмысленные варианты, но чот не работает ничего( То с использованием HSHELL_LANGUAGE, то с WM_INPUTLANGCHANGE..

2

Re: AHK v2: Как отловить переключение раскладки клавиатуры

При смене языка любому окну приходит сообщение WM_INPUTLANGCHANGE. Можно перехватывать это сообщение. Но для этого потребуется писать callback-функцию в DLL. На чистом AHK не получится.

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

3

Re: AHK v2: Как отловить переключение раскладки клавиатуры

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

4

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Я сам на C++ не пишу, но любая нейросеть, думаю, с такой задачей справится.

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

5

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker пишет:

При смене языка любому окну приходит сообщение WM_INPUTLANGCHANGE. Можно перехватывать это сообщение. Но для этого потребуется писать callback-функцию в DLL. На чистом AHK не получится.

Почему не получится? Если любому окну приходит сообщение, значит и окну AHK придёт. Или как?

6

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Любому — в смысле не всем сразу, а тому, чей язык раскладки меняется. Если нужно отловить смену языка своего окна, тогда можно через OnMessage, если чужого, тогда только глобальный хук с callback-функцией в dll.

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

7 (изменено: 3wedsmncjklvjvd73734, 2026-03-15 23:08:13)

Re: AHK v2: Как отловить переключение раскладки клавиатуры

AlexPORT пишет:

Как это сделать без использования таймера, на событиях windows?
Скажем, я хочу сделать свой простой индикатор текущего языка в виде флагов в трее. Чтобы отслеживался факт изменения языка - хоть пользователь нажал сочетание клавиш,

Если ВЫ когда либо занимались, WMI , то вам не составит труда "ЭТО" сделать самому, без  всяких там DLL.
WMI отслеживает все события Вина. Читайте и пробуйте.
--> https://forum.script-coding.com/viewtop … 3656#p3656
подробности
--> http://script-coding.com/WMI.html

8

Re: AHK v2: Как отловить переключение раскладки клавиатуры

3wedsmncjklvjvd73734
Я так понимаю, вы такое проделывали не раз? Тогда не стесняйтесь, приведите конкретный алгоритм. Уверен, что вам это не составит труда.

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

9

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker пишет:

Тогда не стесняйтесь, приведите конкретный алгоритм

Спешу, и падаю. Вот только штаны подтяну.
Для таких вещей, у нас на форуме, есть спец раздел "Коммерческий раздел"--> https://forum.script-coding.com/viewforum.php?id=28

teadrinker пишет:

Уверен, что вам это не составит труда.

В своём выше посту, я дал линк, на пример применения данного метода.
В WMI изготавливаться следилка за любым объектом в вине. В том примере объект была папка.

10

Re: AHK v2: Как отловить переключение раскладки клавиатуры

3wedsmncjklvjvd73734 пишет:

Спешу, и падаю. Вот только штаны подтяну

В смысле, хотите сказать, что знаете решение, но не хотите помочь участнику форума?

3wedsmncjklvjvd73734 пишет:

В WMI изготавливаться следилка за любым объектом в вине

Ну вот, это же почти готовое решение! Но не все же тут имеют такой опыт в программировании, как ваш. Хотя бы подскажите, какой класс WMI использовать для данной задачи.

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

11

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker
вот тут -- > https://forum.script-coding.com/viewtop … 40#p163140
есть линк
http://script-coding.com/WMI.html
В котором полностью всё описано. И даже есть примеры применения поиска нужного объекта.
Если нужны более подробности то есть в иннете сайт по WMI с примерами на разных языках.
https://wutils.com/wmi/
там есть классы и другие примеры.
Кстати можно с WMI работать не только с языками, но и отдельными консолями. Например powershell или wmic
Вот примеры работы с разными консолями для одно и того же объекта.
-->
https://forum.script-coding.com/viewtop … 02#p163002
Эхх жалко, что из-за рекламы Микрософта удалено там всё.
Но у меня есть онлайн архив этой ветки форума и там было написано.

https://allwebs.ru/images/2026/03/16/064fcd6bdb68fc51956b84626b0903a5.jpg

Чем хорош тот пример? А тем что к одному и тому же объекту в WMI обращаются в разных консолях. Т.е. показан синтаксис обращения  в разных консолях к одному и тому же объекту WMI . и получение от него одной и той же инфы, но разными способами.
Короче - дерзайте. Учение, всегда хорошо.
Вовку в тридевятом царстве помните? ...ВПЕРЁД!

12

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Нет я всё понимаю, но вы написали:

3wedsmncjklvjvd73734 пишет:

Если ВЫ когда либо занимались, WMI , то вам не составит труда "ЭТО" сделать самому, без  всяких там DLL

Вовка из тридёвятого царства, конечно, справился бы, но здесь не то царство, здесь Россия-матушка. И пока что ваше многословие в этой ветке выглядит, как пустой трындёж. Пример реальный покажите, или вас тут будут воспринимать соответствующим образом. Здесь форум по программированию, а не по бла-бла-бла.

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

13 (изменено: 3wedsmncjklvjvd73734, 2026-03-16 23:58:45)

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker пишет:

Вовка из тридёвятого царства, конечно, справился бы, но здесь не то царство, здесь Россия-матушка. И пока что ваше многословие в этой ветке выглядит, как пустой трындёж. Пример реальный покажите, или вас тут будут воспринимать соответствующим образом. Здесь форум по программированию, а не по бла-бла-бла.

Я на "слабо", не ведусь. Для меня лично, своего "авторитета" и своих знаний достаточно.
Повторю.
Советую ВАМ с этим обратится тут на форуме, в спец ветку "Коммерческий раздел"--> https://forum.script-coding.com/viewforum.php?id=28

14

Re: AHK v2: Как отловить переключение раскладки клавиатуры

3wedsmncjklvjvd73734, если что, автор темы не teadrinker, а AlexPORT. Будьте любезны это осознать и не выдавать из себя профи без кода.

Win11x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101

15

Re: AHK v2: Как отловить переключение раскладки клавиатуры

3wedsmncjklvjvd73734 пишет:

WMI отслеживает все события Вина.

Заблуждаетесь, далеко не все.
Через wmi сделать-то в принципе можно, только придётся свой wmi провайдер писать.

16

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Malcev пишет:

Заблуждаетесь, далеко не все.
Через wmi сделать-то в принципе можно, только придётся свой wmi провайдер писать.

А я против? Пусть пишут.

17 (изменено: Malcev, 2026-03-17 12:52:18)

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Это задача для мидла по c++.
Но под капотом будет тот же SetWindowsHookEx, только в разы сложнее.

18

Re: AHK v2: Как отловить переключение раскладки клавиатуры

__Михаил__ пишет:

если что, автор темы не teadrinker, а AlexPORT. Будьте любезны это осознать и не выдавать из себя профи без кода.

Я знаю кто автор. только НЕ АВТОР меня просил ЕМУ (teadrinker) написать код. Я ЕМУ (teadrinker) и ответил по поводу конкретного кода.
"Профи" никогда не выдавал я себя тут. я выдаю из себя ПРОФИ только в той области в которой ПРОФИ!.
Если мне нужно то пишу нахаляву, если не хочу, мне пофиг всё - профи/непрофи.
В данном случае мне пофиг. В ветке про "не убиваемую вин10" было не пофиг. Но вот teadrinker-у вдруг в последнем моём посту там вдруг показалось что я там рекламу веду.. Хотя 2-а месяца
https://allwebs.ru/images/2026/03/17/6de691e216dc2996a6ab488f5836398f.jpg

назад там же была целая ссылка на market.yandex

https://allwebs.ru/images/2026/03/17/d47f8053baff0951a0b8ddf2c39db4ee.jpg

по приобретению RAID карты. И она ему почему то не показалась рекламой. Поэтому я из-за этого явного НЕ ОБЪЕКТИВНОГО отношения к моей персоне имею к здешнему админу....
Короче, "...  «такую личную неприязнь я испытываю к потерпевшему, что кушать не могу..."

19 (изменено: 3wedsmncjklvjvd73734, 2026-03-17 01:14:10)

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Malcev пишет:

Это задача для мидла по c++.
Но под капотом будет тот же SetWinEventHookEx, только в разы сложнее.

Не знаю, не смотрел. Знаю что можно ципануть эвенты и всё. Мне некогда ЭТИМ заниматься, самому, нет для этого хорошего стимула. "Деньги ничто - камни всё!"

20 (изменено: 3wedsmncjklvjvd73734, 2026-03-17 01:45:26)

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker
AlexPORT

Палец об палец не ударил, а туда же — «я хочу»! .
Ну вы чего, совсем того?
Вот первая же ссылка из яндекса на объект в WMI
https://abcdeployment.wordpress.com/201 … owershell/
там powershell.
Но я ранее приводил пример как из одного синтаксиса консоли ципануть нужный объект от WMI для применения его в другом языке.

21

Re: AHK v2: Как отловить переключение раскладки клавиатуры

А вы понимаете, что скрипт по вашей ссылке делает?

22 (изменено: 3wedsmncjklvjvd73734, 2026-03-17 02:00:10)

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Malcev
Конечно.
Да ЭТО же не главное. Главное в том примере зацепиться, где ЭТОТ объект в WMI находиться (namespace), что бы уже там смотреть что там можно от него поиметь.
ранее тут же давал СПЕЦАМ
https://wutils.com/wmi/

(Get-WmiObject -Class Win32_OperatingSystem).MUILanguages

вот не прошло и 5 минут.

https://wutils.com/wmi/root/cimv2/win32 … properties
и ещё есть 2-а места.
https://wutils.com/wmi/properties/muilanguages.html

23

Re: AHK v2: Как отловить переключение раскладки клавиатуры

MUILanguages - это установленные языки в системе.
В wmi нет готовой возможности отследить раскладку.
Поэтому я и написал, что через wmi это реализовать можно только написав свой провайдер.

24 (изменено: 3wedsmncjklvjvd73734, 2026-03-18 16:53:27)

Re: AHK v2: Как отловить переключение раскладки клавиатуры

AlexPORT
https://github.com/Krot66/LangBarXX
На странице линка открываем блокнотом файл "LangBarXX.ahk"
В этом файле читаем комент-->


/*
Использованы:
Начальный код отображения флажка Irbis http://forum.script-coding.com/viewtopic.php?id=10392&p=3
Gdip library by Tic
Acc Standard Library by Sean
Hunspell Spell library - majkinetor, jballi
FileGetInfo and StrUnmark by Lexicos
ChooseColor - iPhilip
GetCaret - plankoe
*/


Копируем из комента линк.  Открываем линк -->
http://forum.script-coding.com/viewtopi … 2&p=3

И внимательно читаем и анализируем, как там и что, можно использовать для себя любимого
НО я думаю что полезней вам будет всё таки там -->
https://github.com/Krot66/LangBarXX
Читайте.

25

Re: AHK v2: Как отловить переключение раскладки клавиатуры

3wedsmncjklvjvd73734, вам бы не стоило соваться в темы, в которых мало что понимаете.

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

26 (изменено: 3wedsmncjklvjvd73734, 2026-03-18 19:36:07)

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker
Да! Чего то я ... Ему же нужно вообще вместо стандартных букв, вставить графику туда. А это уже ломание проги. Или замена её на свою.
Поэтому даже эвенты не проканают.
Вот тут -->
https://www.cyberforum.ru/visual-basic/ … 93740.html
Делают на VB и там вложенный zip на PureBasic
Я посмотрел внутри и  там тоже таймер и как у автора
WM_INPUTLANGCHANGEREQUEST
И...
Там в zip-e exe. Я запустил. Появилась в трее, своя иконка с флагами. Но стандартная так и осталась с буквами.
И в окне блокнота эти флаги с курсором маячут. Как наверное у вас на кей.
Что автору надо - не пойму.

27 (изменено: 3wedsmncjklvjvd73734, 2026-03-18 22:29:33)

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker
Я нашёл и "не нашёл" (но близко) к чему нужно цеплять эвент, что бы узнать в каком состоянии в данный момент находится клава.
Короче.
Смотрим API там.
https://www.cyberforum.ru/visual-basic/ … 93740.html

Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long

В API есть  Keyboard и Layout .
вбиваем в поиск слова

WMI Get Keyboard Layout

получаем линк
https://learn.microsoft.com/en-us/windo … -keyboard

В котором есть пояснение насчёт  Layout


[Dynamic, Provider("CIMWin32"), UUID("{8502C4B5-5FBB-11D2-AAC1-006008C78BC7}"), AMENDMENT]
class Win32_Keyboard : CIM_Keyboard
{
  uint16   Availability;
  string   Caption;
  uint32   ConfigManagerErrorCode;
  boolean  ConfigManagerUserConfig;
  string   CreationClassName;
  string   Description;
  string   DeviceID;
  boolean  ErrorCleared;
  string   ErrorDescription;
  datetime InstallDate;
  boolean  IsLocked;
  uint32   LastErrorCode;
  string   Layout;
  string   Name;
  uint16   NumberOfFunctionKeys;
  uint16   Password;
  string   PNPDeviceID;
  uint16   PowerManagementCapabilities[];
  boolean  PowerManagementSupported;
  string   Status;
  uint16   StatusInfo;
  string   SystemCreationClassName;
  string   SystemName;
};

смотрим ниже про Layout


Layout
    Data type: string
    Access type: Read-only
    Free-form string indicating the layout of the keyboard.
    This property is inherited from CIM_Keyboard.

Он ссылается на свойства из  CIM_Keyboard
Переходим по ссылке
https://learn.microsoft.com/en-us/windo … m-keyboard
И там читаем
напротив


Layout
    Data type: string
    Access type: Read-only
   Free-form string that indicates the format and layout of the keyboard.

Что в переводе означает
Тип данных: строка
Тип доступа: Только для чтения
Строка произвольной формы, указывающая формат и раскладку клавиатуры.

Т.е. цепляем эвент к нему и узнаём клаву раскладку после переключения.
https://wutils.com/wmi/root/cimv2/cim_k … roperties

ПРИМЕР РАСПОЗНАВАНИЯ КЛАВЫ.
https://scriptcoding.ru/win32_keyboard- … laviature/
И всё равно выхватывает только код 409.
В месяге в примере сказано что ЭТО КЛАВА.
Т.е. Получается что ЭТО железка, которая имеет свойства.
А нам нужна прога переключения. Поэтому надо отслеживать прогу.
Ищем дальше.

28

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker
Через WMI явно не получается. ВЫ ВСЕ были правы.
Но есть другой способ.
Я сам лично знаю что за яз раскл клавы отвечает
ctfmon.exe
Вот что про него написано.



. Он отвечает за многие из функций текстового и голосового ввода, а также за работу индикатора языковой панели. rutube.ru
Отключать процесс рекомендуется только в том случае, если пользователь использует всего одну раскладку клавиатуры, а также не задействует рукописный, сенсорный, голосовой ввод и не нужно наличие языкового индикатора в трее. rutube.ru
После отключения ctfmon.exe может пропасть значок языка в области уведомлений, а в некоторых полях (поиск на панели задач, поиск по параметрам Windows, приложения из Windows Store) может перестать работать ввод с клавиатуры

а так же

https://learn.microsoft.com/ru-ru/answe … 787428/ctf

Поэтому попробовать сделать в WNI следилку за ним, вместо папок (каталогов) в ТОМ примере.

29

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Вот это классная идея. А что именно отслеживать?

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

30

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker
Пока не знаю. Но почему я сразу на ЭТО (на то что что каталог это софтина) не обратил внимание не знаю.
Надо эту софтину в hex смотреть.

31 (изменено: 3wedsmncjklvjvd73734, 2026-03-19 14:20:53)

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker
ЕЕЕЕЕЕЕСССССССС!!!
Предисловие..

"Если бы молодость знала,
Если бы старость могла." (R)

Короче. МЫ можем сами для себя заделать ЛЮБУЮ эвентс вообще для всего что можно придумать юзеру.
И никакие там WMI которые нам подсовывает Микрософт нам не нужны.

+ открыть спойлер

В данном нашем конкретном случае, нам нужен свой объект который будет сидеть в памяти и отслеживать клаву по своему внутреннему эвентсу
Такой объект например у меня (VBS) будет HTA. В этом HTML файле есть отлов процедуры нажатия клавы. Поцедура будет отслживать что там нажата было и передавать во внешний мир (например через "проводник"), или внутри себя в переменную.
Вот например у меня...




    onchange Event: This event occurs when any change occurs in context to the element in the Script i.e. when the element changes, this event gets fired in the Script.
    onsubmit Event: This event occurs at the Script level when the form gets submitted in the application.
    onreset Event: This event occurs at the Script level when the form gets to the reset mode in the application.
    onfocus Event: This event occurs at the Script level when any of the elements gets a focus in the application.
    onblur Event: This event occurs at the Script level when the element loses its focus in the application.
    ondblclick Event: This event occurs at the Script level when the mouse gets double-clicked.
    onmousedown Event: This event occurs at the Script level when the mouse button gets pressed.
    onmouseup Event: This event occurs at the Script level when the mouse button gets released.
    onkeyup Event: This event occurs at the Script level when any of the keys that are present in the keyboard button gets released.
    onkeydown Event: This event occurs at the Script level when any of the keys that are present on the keyboard get pressed.
    onkeypress Event: This event occurs at the Script level when any of the keys that are present on the keyboard get pressed and released.
    onmousemove Event: This event occurs at the Script level when the pointer of the mouse moves.


событие onchange: Это событие происходит, когда в контексте элемента в скрипте происходит какое-либо изменение, т.е. когда элемент изменяется, это событие запускается в скрипте.
 Событие onsubmit: Это событие происходит на уровне скрипта, когда форма отправляется в приложение.
 событие onreset: Это событие происходит на уровне скрипта, когда форма переходит в режим сброса в приложении.
 Событие onfocus: Это событие происходит на уровне скрипта, когда какой-либо из элементов получает фокус в приложении.
 событие onblur: Это событие происходит на уровне скрипта, когда элемент теряет фокус в приложении.
 Событие ondblclick: Это событие происходит на уровне скрипта при двойном щелчке мыши.
 событие onmousedown: Это событие происходит на уровне скрипта при нажатии кнопки мыши.
 Событие onmouseup: Это событие происходит на уровне скрипта при отпускании кнопки мыши.
 событие onkeyup: Это событие происходит на уровне скрипта, когда любой из присутствующих ключей вводится

HTA

Following is an example to show the working of this Event.

<html> 
<head>
<title>Let’s see the working of ‘On Click of Button’ Event</title>
</head>
<body>
<script language=”vbscript” type=”text/vbscript”>
Function displaymessage(name)
 Msgbox “Hello ” & name 
End Function
Function displaymessage1(name)
 Msgbox “Hello ” & name 
End Function
</script>
<input name =”txtmsg” type =”text” OnMouseOver= “displaymessage(riya)”> <br>
<input name =”txtmsg1” type =”text” OnMouseOut= “displaymessage1(siya)”>
</body> 
</html>

32 (изменено: 3wedsmncjklvjvd73734, 2026-03-19 14:46:19)

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker
ВОТ-->
https://forum.script-coding.com/viewtopic.php?id=1433
HTA hide mode

+ открыть спойлер
window.resizeTo(0,0)

совместно с 

WINDOWSTATE="normal"

<HTML>
    <HEAD>
        <HTA:APPLICATION ID="oHTA"
        APPLICATIONNAME="myApp"
        WINDOWSTATE="normal"
        MAXIMIZEBUTTON="no"
        MINIMIZEBUTTON="no"
        CAPTION="no"
        SHOWINTASKBAR="no"
        >
        <script>
            window.resizeTo(0,0);
            var myVar = setInterval(function(){ myTimer() }, 3000);
            function myTimer() {
                objShell=new ActiveXObject("WScript.Shell");
            objShell.Run ('%windir%\\System32\\cmd.exe /c %temp%\\readme.txt', 0,true);window.close();
            }
        </script>
    </HEAD>
    <BODY SCROLL="no">
    </BODY>
</HTML>

33

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Идея с отслеживанием нажатий клавиатуры уже лучше. Но разве язык активного окна всегда может измениться только по нажатию клавиши?

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

34 (изменено: 3wedsmncjklvjvd73734, 2026-03-19 16:36:04)

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker
Пока так.

пример
при нажатии на клаве, выпадает код символа

+ открыть спойлер


<head>
<title>Test</title>
<HTA:APPLICATION ID="oHTA"
  APPLICATIONNAME="Test"
>
</head>

<script language="VBScript">
Sub CheckKey
msgbox window.event.keyCode
'  If window.event.keyCode = 112 Then self.close()
self.close()
End Sub
</script>

<body onKeyUp="CheckKey">
<script language="VBScript">
'...
</script>
</body>

не видимый - варианты.


решение заключается в том, что вы можете развернуть HTA-приложение, которое может представлять собой пустую страницу с IFRAME, то есть

<html>
<head>
<title>Test</title>
</head>
<body>
<br/>
<iframe src="http://somewhere.org" />
</body>
</html>

Таким образом, приложение HTA можно запускать повторно без необходимости повторной авторизации, поскольку оно уже установлено на компьютере. Однако содержимое HTA можно обновить, изменив удаленный документ, указанный в IFRAME.


==========вариант 2 ===================
<SCRIPT LANGUAGE="VBScript">
set a = CreateObject("WScript.Shell")
visible = false
a.run "mshta.exe ""file:///evil.hta""", visible
window.close()
</SCRIPT>


Можно конечно внутри запустить запуск powershell с ps1 (или скомпилированный .NET), после нажатия клавы,  в котором вызывается API с анализом языковой панели.
По крайней мере ЭТО API уже будет запускаться не по времени. И разгрузит CPU

35

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Нажатие клавиши в AHK отслеживается одной строкой кода, не нужно огород городить. Но, как я уже сказал выше, язык может смениться не только по нажатию клавиши. Кроме того, сейчас вы отвечаете не на тот вопрос. Вопрос был, как отследить событие смены языка, а не событие, которое может привести к смене языка.

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

36

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker
Ну да. Автор упоминал. что сейчас всё и так пашет. но он бы хотел отвязаться от таймера. который запускает проверку языка через API.
Мой пример отвязывает проверку по АПИ через таймер.
И есть вариант Б
Я заметил что при смене языка, у ctfmon.exe происходит изменение в задействовании ресурса CPU. Т.е. запустить следилку по потреблению ресурса у ctfmon.exe. которая будет оповещать что произошло изменения именно языка, а не просто нажатия клавы/мыши.

37

Re: AHK v2: Как отловить переключение раскладки клавиатуры

AlexPORT пишет:

Как это сделать без использования таймера, на событиях windows?

Забейте и используйте поллинг (таймер).
Ничего более надежного всё-равно не изобретёте.

38

Re: AHK v2: Как отловить переключение раскладки клавиатуры

3wedsmncjklvjvd73734 пишет:

запустить следилку по потреблению ресурса у ctfmon.exe

Только не утверждайте, что вы в состоянии это сделать.

3wedsmncjklvjvd73734 пишет:

Мой пример отвязывает проверку по АПИ через таймер

Ну, если такой ответ устроит автора, то не имею ничего против.

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

39

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker пишет:

Только не утверждайте, что вы в состоянии это сделать.

Когда у котёнка не получается взять своей лапой чашку (копируя действия человека), он теряет к этому интерес.
Я уже зеваю, от упоминания ловли языковой панели.

40

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Так вы от любого предложения написать код зеваете.

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

41 (изменено: 3wedsmncjklvjvd73734, 2026-03-19 23:53:50)

Re: AHK v2: Как отловить переключение раскладки клавиатуры

teadrinker
Что поделать, мы "молодёжь" такие.

"Если бы молодость знала,
Если бы старость могла." (R)

Видать мне знаний не хватает, а вам сил.
Желание было победить "не убиваемую вин 10 с RAM диском" + "следилку за всем этим (VBS+.NET)". И я его победил. А с ЭТИМ (данная эта тема), мне не интересна (зеваю). На безопасность никак не влияет, да и ладно.
Опять зеваю.

42

Re: AHK v2: Как отловить переключение раскладки клавиатуры

3wedsmncjklvjvd73734 пишет:

"Если бы молодость знала,
Если бы старость могла." (R)
Видать мне знаний не хватает, а вам сил.

А почему вы решили, что мне чего-то не хватает? На этом форуме достаточно моего кода. А себя вы к кому причисляете, к тем, кто может, или к тем, кто знает? Пока впечатление, что ни к тем, ни к другим.

3wedsmncjklvjvd73734 пишет:

Опять зеваю

Здесь не это ценится.

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

43

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Malcev пишет:
AlexPORT пишет:

Как это сделать без использования таймера, на событиях windows?

Забейте и используйте поллинг (таймер).
Ничего более надежного всё-равно не изобретёте.

Cистемное сообщение не надёжное?

44

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Не уверен, что будет срабатывать со всеми uwp приложениями. По документации у них по другому опоаещается. Да и при переключении между окнами с разной раскладкой может не всегда отправлять.

45

Re: AHK v2: Как отловить переключение раскладки клавиатуры

Дальнейшую дискуссию перенёс в OFF: Продолжение AHK: Как отловить переключение раскладки клавиатуры

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