PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Переклбчение раскладки клавиатуры


Переклбчение раскладки клавиатуры

Сообщений 1 страница 3 из 3

1

Здравствуйте, у меня вопрос к тем кто давно работает с PureBasic:
как задействовать API SetKeyboardLayout.

Если я пишу

ArKH = LoadKeyboardLayout_(@"00000419",$00000001)

expRus  = ActivateKeyboardLayout_(ArKH,$00000100)

то раскладка на RUS не меняется... хотя expRus <> 0

0

2

у меня так в плаге ConvKey.pb для AkelPad

Код:
If Lang = 419 ; если русский, то меняем на английский
	Layout = LoadKeyboardLayout_("00000409", #KLF_ACTIVATE)
	SendMessage_(GetForegroundWindow_(), #WM_INPUTLANGCHANGEREQUEST, 1, Layout)
ElseIf Lang = 409 ; если английский, то меняем на русский.
	; переключает раскладку клавиатуры на правильную, чтобы сразу продолжать вводить
	Layout = LoadKeyboardLayout_("00000419", #KLF_ACTIVATE)
	SendMessage_(GetForegroundWindow_(), #WM_INPUTLANGCHANGEREQUEST, 1, Layout)
EndIf

и получение

Код:
; Procedure.s GetActiveKeyboardLayout(hWnd)
; 	Protected Res ; , PID
;     Res = GetWindowThreadProcessId_(hWnd, 0)
;     Res = GetKeyboardLayout_(Res)
;     ProcedureReturn "0000" + Right(Hex(Res), 4)
; EndProcedure

Procedure.s GetActiveKeyboardLayout(hWnd)
    ProcedureReturn "0000" + Right(Hex(GetKeyboardLayout_(GetWindowThreadProcessId_(hWnd, 0))), 4)
EndProcedure

MessageRequester("Раскладка текущего окна", GetActiveKeyboardLayout(GetForegroundWindow_()))

Отредактировано AZJIO (13.09.2020 18:24:49)

0

3

Спасибо Вам большое.

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Переклбчение раскладки клавиатуры