1 (изменено: Вадим, 2011-09-25 22:56:50)

Тема: AHK: код украинского языка

SendMessage,0x50,,0x4190419,,A - переключить на рус
SendMessage,0x50,,0x4090409,,A - переключить на англ?

1) Как на укр?)
2) как это (0x50,,0x4090409) узнают? Есть какая-то программа?

2

Re: AHK: код украинского языка

Вадим, читаем первую тему на странице, редактируем пост и заголовок.

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

3 (изменено: Александр_, 2011-09-25 23:37:34)

Re: AHK: код украинского языка

Вадим пишет:

SendMessage,0x50,,0x4190419,,A - переключить на рус
SendMessage,0x50,,0x4090409,,A - переключить на англ?
1) Как на укр?)
2) как это (0x50,,0x4090409) узнают? Есть какая-то программа?

1) SendMessage,0x50,,0x422,,A ,старшее слово можно не выставлять.
2) Здесь самый левый столбик, обычно этого хватит. Полное описание тут и далее по ссылкам(там какой-то огород из макросов, получится что-то типа MAKELCID(MAKELANGID(LANG_XXX, SUBLANG_XXX_YYY), SORT_DEFAULT)- разберёмся если нужно будет ).
Посмотрел макросы, похоже всё просто:

#define MAKELANGID(p, s) ((((WORD) (s)) << 10) | (WORD) (p))

например смена на норвежскую раскладку:

WM_INPUTLANGCHANGEREQUEST := 0x50 ; сообщение
LANG_SAMI                 := 0x3B ; Primary language
SUBLANG_SAMI_SKOLT_FINLAND:= 0x08 ; Sublanguage

MAKELANGID( p, s)
{
   return (s << 10) | p
}
; сменить активному окну раскладку на финскую
SendMessage,WM_INPUTLANGCHANGEREQUEST,,MAKELANGID(LANG_SAMI,SUBLANG_SAMI_SKOLT_FINLAND),,A

Если раскладка в системе не установлена, то её можно загрузить через LoadKeyboardLayout

4 (изменено: mih, 2011-09-26 04:54:43)

Re: AHK: код украинского языка

Определение идентификатора раскладки:

F11::
  SetFormat, Integer, H
  WinGet, WinID,, A
  ThreadID:=DllCall("GetWindowThreadProcessId", "Int", WinID, "Int", "0")
  InputLocaleID:=DllCall("GetKeyboardLayout", "Int", ThreadID)
  MsgBox, %InputLocaleID%
Exit

Перейти в интересующую раскладку и нажать f11.