Скрипт не меняет язык ввода в некоторых окнах

Помощь в написании скриптов
Yurimi
Posts: 2
Joined: 27 Nov 2018, 16:35

Скрипт не меняет язык ввода в некоторых окнах

29 Nov 2018, 02:44

Здравствуйте, есть вот такой, не лучшим образом сделанный скрипт:

Code: Select all

   ;--------------------; Keyboard Layout for Language ;--------------------;
 ; For [LAlt]+[LShift] Button key
#IfWinActive
~LAlt & ~LShift::
	SetFormat, Integer, H
	LocaleRussian=0x4090409		; English Language
	LocaleEnglish=0x4190419		; Russian Language
	LocaleWinID := WinExist("A")
	ThreadID:=DllCall("GetWindowThreadProcessId", "Int", LocaleWinID, "Int", "0")
	InputLocaleID:=DllCall("GetKeyboardLayout", "Int", ThreadID)

	If(InputLocaleID!=LocaleRussian)
	{
		PostMessage, 0x50,, % LocaleRussian,, A
	}
	Else
	{
		If(InputLocaleID!=LocaleEnglish)
			PostMessage, 0x50,, % LocaleEnglish,, A
	}
	Return

 ; For [LShift]+[LAlt] Button key
#IfWinActive
~LShift & ~LAlt::
	SetFormat, Integer, H
	LocaleRussian=0x4090409		; English Language
	LocaleEnglish=0x4190419		; Russian Language
	LocaleWinID := WinExist("A")
	ThreadID:=DllCall("GetWindowThreadProcessId", "Int", LocaleWinID, "Int", "0")
	InputLocaleID:=DllCall("GetKeyboardLayout", "Int", ThreadID)

	If(InputLocaleID!=LocaleRussian)
	{
		PostMessage, 0x50,, % LocaleRussian,, A
	}
	Else
	{
		If(InputLocaleID!=LocaleEnglish)
			PostMessage, 0x50,, % LocaleEnglish,, A
	}
	Return

 ; For [LControl]+[LAlt] Button key
#IfWinActive
~LControl & ~LAlt::
	LocaleJapan=0x4110411		; Japan Language
	PostMessage, 0x50,, % LocaleJapan,, A
	Sleep 50
	Send !{CapsLock}		; Katakana
	Return

 ; For [LAlt]+[LControl] Button key
#IfWinActive
~LAlt & ~LControl::
	LocaleJapan=0x4110411		; Japan Language
	PostMessage, 0x50,, % LocaleJapan,, A
	Sleep 50
	Send ^{CapsLock}		; Hiragana
	Return
 ;;;
В большинстве приложений скрипт меняет язык ввода, но при выборе активным окна "Найти" в Notepad++ скрипт язык ввода уже не меняет, хоть окно и находит и проверку языка делает. В целом, это относится также и к любым другим "диалоговым окнам" (к примеру тем, что можно вызвать в браузере, нажав "Сохранить как")
Проблема, как мне видится, связана с PostMessage. Как эту проблему исправить я не знаю, особого опыта работы с ahk нет, про вики знаю, но и там не получилось разобраться в проблеме. Надеюсь на вашу помощь;

P.S. Дополнительными, не столь важным вопросами-
1) Можно ли при смене языка ввода сразу указать способов ввода? Чтобы не ставить Хирагану или Катакану через комбинации клавиш, а обойтись чем-то на уровне PostMessage?
2) Можно ли объединить ~LAlt & ~LShift и ~LShift & ~LAlt в одну комбинацию? Их пришлось продублировать со сменной порядка, потому что этот самый порядок нажатия клавишь для их исполнения важен.

Спасибо за ваше время

Return to “Помощь”

Who is online

Users browsing this forum: No registered users and 3 guests