1

Тема: AHK: Windows 10

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


PostMessage, 0x50, 0, 0x4090409,, A ;английский
PostMessage, 0x50, 0, 0x4190419,, A ;русский

Кто нибудь знает как решить проблему?

2

Re: AHK: Windows 10

sabir.yanin2014 пишет:

Предлагаю создать тему посвященную работе AHK в среде Windows 10

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

sabir.yanin2014 пишет:

Вот пример

А так работает?

ControlGetFocus, CtrlFocus, % "ahk_id" WinExist("A")
PostMessage, 0x50, 0, 0x4090409, %CtrlFocus% 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Windows 10

Смежный вопрос: Действия внутри приложения Windows 10

4 (изменено: sabir.yanin2014, 2016-05-09 23:23:33)

Re: AHK: Windows 10

serzh82saratov, работает!
Но я хотел запустить свой переводчик-часть кода:


If DllCall("GetKeyboardLayout", "Int", DllCall("GetWindowThreadProcessId", "Int", WinExist("A"), "Int", "0")) = 0x4190419
PostMessage, 0x50, 0, 0x4090409,, A ;английский
Else
PostMessage, 0x50, 0, 0x4190419,, A ;русский

по вашему способу:


If DllCall("GetKeyboardLayout", "Int", DllCall("GetWindowThreadProcessId", "Int", WinExist("A"), "Int", "0"))=0x4190419
{
ControlGetFocus, CtrlFocus, % "ahk_id" WinExist("A")
PostMessage, 0x50, 0, 0x4090409, %CtrlFocus% ;английский
}
else
{
ControlGetFocus, CtrlFocus, % "ahk_id" WinExist("A")
PostMessage, 0x50, 0, 0x4090419, %CtrlFocus% ;русский
}

Не работает. C русского на английский меняет раскладку, а наоборот не хочет.
DllCall язык определяет:


If DllCall("GetKeyboardLayout", "Int", DllCall("GetWindowThreadProcessId", "Int", WinExist("A"), "Int", "0")) = 0x4190419
MsgBox  русский
Else
MsgBox  английский

Может подскажете что я не так делаю?

5 (изменено: sabir.yanin2014, 2016-05-10 00:54:19)

Re: AHK: Windows 10

Может 0x4090419 не правильный номер для русского пакета так как это работает:


z::
ControlGetFocus, CtrlFocus, % "ahk_id" WinExist("A")
PostMessage, 0x50, 0, 0x4090409, %CtrlFocus% ;смена на английский
Return 
 

А вот это нет:


v::
ControlGetFocus, CtrlFocus, % "ahk_id" WinExist("A")
PostMessage, 0x50, 0, 0x4090419, %CtrlFocus% ;смена на русский
Return 

6

Re: AHK: Windows 10

0x4190419

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

7

Re: AHK: Windows 10

teadrinker,спасибо!