可以调用系统方法
Private
Declare
FunctionGetKeyboardLayoutList()
FunctionGetKeyboardLayoutListLib"user32"(ByValnBuffAsLong,lpListAsLong)AsLong
PrivateDeclareFunctionImmGetDescription()FunctionImmGetDescriptionLib"imm32.dll"Alias"ImmGetDescriptionA"(ByValHKLAsLong,_
ByVallpszAsString,ByValuBufLenAsLong)AsLong
PrivateDeclareFunctionImmIsIME()FunctionImmIsIMELib"imm32.dll"(ByValHKLAsLong)AsLong
PrivateDeclareFunctionActivateKeyboardLayout()FunctionActivateKeyboardLayoutLib"user32"(ByValHKLAsLong,ByValflagsAsLong)AsLong
PrivateDeclareFunctionGetKeyboardLayout()FunctionGetKeyboardLayoutLib"user32"(ByValdwLayoutAsLong)AsLong
PrivateSubForm_Load()SubForm_Load()
DimNoOfKBDLayoutAsLong,iAsLong,jAsLong
DimhKB(24)AsLong,BuffLenAsLong
DimBuffAsString
DimRetStrAsString
DimRetCountAsLong
Buff=String(255,0)
hCurKBDLayout=GetKeyboardLayout(0)'取得目前keyboardlayout
NoOfKBDLayout=GetKeyboardLayoutList(25,hKB(0))'取得所有输入法的hkeys
Fori=1ToNoOfKBDLayout
IfImmIsIME(hKB(i-1))=1Then'中文输入法
BuffLen=255
RetCount=ImmGetDescription(hKB(i-1),Buff,BuffLen)
RetStr=Left(Buff,RetCount)
Combo1.AddItemRetStr
Else
RetStr="English(American)"'假设我们的win95非Ime者只有English
Combo1.AddItemRetStr'若有其他者,要去取得keyboardLayout
EndIf'Name再去Registry中找其对应的名称
IfhKB(i-1)=hCurKBDLayoutThen
Combo1.Text=RetStr
EndIf
Next
ActivateKeyboardLayouthCurKBDLayout,0'恢复原来输入法
EndSub
EndFunction
PrivateDeclareFunctionImmGetDescription()FunctionImmGetDescriptionLib"imm32.dll"Alias"ImmGetDescriptionA"(ByValHKLAsLong,_
ByVallpszAsString,ByValuBufLenAsLong)AsLong
PrivateDeclareFunctionImmIsIME()FunctionImmIsIMELib"imm32.dll"(ByValHKLAsLong)AsLong
PrivateDeclareFunctionActivateKeyboardLayout()FunctionActivateKeyboardLayoutLib"user32"(ByValHKLAsLong,ByValflagsAsLong)AsLong
PrivateDeclareFunctionGetKeyboardLayout()FunctionGetKeyboardLayoutLib"user32"(ByValdwLayoutAsLong)AsLong
PrivateSubForm_Load()SubForm_Load()
DimNoOfKBDLayoutAsLong,iAsLong,jAsLong
DimhKB(24)AsLong,BuffLenAsLong
DimBuffAsString
DimRetStrAsString
DimRetCountAsLong
Buff=String(255,0)
hCurKBDLayout=GetKeyboardLayout(0)'取得目前keyboardlayout
NoOfKBDLayout=GetKeyboardLayoutList(25,hKB(0))'取得所有输入法的hkeys
Fori=1ToNoOfKBDLayout
IfImmIsIME(hKB(i-1))=1Then'中文输入法
BuffLen=255
RetCount=ImmGetDescription(hKB(i-1),Buff,BuffLen)
RetStr=Left(Buff,RetCount)
Combo1.AddItemRetStr
Else
RetStr="English(American)"'假设我们的win95非Ime者只有English
Combo1.AddItemRetStr'若有其他者,要去取得keyboardLayout
EndIf'Name再去Registry中找其对应的名称
IfhKB(i-1)=hCurKBDLayoutThen
Combo1.Text=RetStr
EndIf
Next
ActivateKeyboardLayouthCurKBDLayout,0'恢复原来输入法
EndSub
EndFunction
可以通过控制textbox等控件
Alpha 字母数字单字节字符 (SBC)。此设置仅对朝鲜语和日语 IME 有效。
AlphaFull 字母数字双字节字符。此设置仅对朝鲜语和日语 IME 有效。
Disable IME 被禁用。如果使用此设置,则用户无法从键盘打开 IME,而且 IME 浮动窗口处于隐藏状态。
Hangul 朝鲜文 SBC。此设置仅对朝鲜语 IME 有效。
HangulFull 朝鲜文 DBC。此设置仅对朝鲜语 IME 有效。
Hiragana 平假名 DBC。此设置仅对日语 IME 有效。
Inherit 继承父控件的 IME 模式。
Katakana 片假名 DBC。此设置仅对日语 IME 有效。
KatakanaHalf 片假名 SBC。此设置仅对日语 IME 有效。
NoControl 无(默认)。
Off IME 已关闭。此模式指示 IME 已关闭,这意味着该对象的行为方式与英语输入模式相同。此设置仅对日语、简体中文和繁体中文 IME 有效。
On IME 已打开。此值指示 IME 已打开,可以输入中文或日语特定的字符。此设置仅对日语、简体中文和繁体中文 IME 有效。