函数参考


_WinAPI_ActivateKeyboardLayout

设置调用线程或当前进程输入法区域标识符.

#Include <WinAPIEx.au3>
_WinAPI_ActivateKeyboardLayout ( $hLocale [, $iFlag] )

参数

$hLocale 被激活的输入法区域标识符.此参数必须是键盘布局句柄或以下值之一:

$HKL_NEXT --- 系统区域标识符列表中的下一个区域标识符.
$HKL_PREV --- 系统区域标识符列表中的前一个区域标识符.
$iFlag [可选参数] 指定如何激活输入法区域标识符.参数可以是以下值之一:

$KLF_REORDER --- 系统区域标识符列表重新排序,并将激活的区域标识符置于顶部.
$KLF_RESET --- 如设置此项而未设置 KLF_SHIFTLOCK,则 Caps Lock 状态为打开;如同时设置 KLF_SHIFTLOCK, 则 Caps Lock 状态为按 Shift 键关闭.
$KLF_SETFORPROCESS --- 为全部进程指定区域标识符,并发送 WM_INPUTLANGCHANGE 消息到当前线程或活动窗口.
$KLF_SHIFTLOCK -- 用于 KLF_RESET.见 KLF_RESET 的解释.

返回值

成功: 返回先前的输入法区域标识符.
失败: 返回 0,并设置@error标志为非 0 值.

注意/说明

None

相关

详情参考

在MSDN中搜索


示例/演示


#Include <APIConstants.au3>
#Include <StaticConstants.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

Global $Msg, $Label, $Next, $Prev, $Update = True

GUICreate('MyGUI', 300, 200)
$Label = GUICtrlCreateLabel('', 10, 66, 280, 40, $SS_CENTER)
GUICtrlSetFont(-1, 12, 800, 0, 'Tahoma')
$Prev = GUICtrlCreateButton('<', 82, 164, 60, 24)
$Next = GUICtrlCreateButton('>', 158, 164, 60, 24)
GUISetState()

While 1
    If $Update Then
        GUICtrlSetData($Label, '0x' & StringRight(@KBLayout, 4) & @CR & _WinAPI_GetLocaleInfo(Number('0x' & @KBLayout), $LOCALE_SLANGUAGE))
        $Update = 0
    EndIf
    $Msg = GUIGetMsg()
    Switch $Msg
        Case -3
            ExitLoop
        Case $Next
            _WinAPI_ActivateKeyboardLayout($HKL_NEXT)
            $Update = 1
        Case $Prev
            _WinAPI_ActivateKeyboardLayout($HKL_PREV)
            $Update = 1
    EndSwitch
WEnd