如何解决输入法问题

各位大哥大姐们:
小弟正在做一个应用程序,想在该应用程序中的系统设置中添加关于输入法的设置,如把输入法设置为全拼或五笔等,保存退出后,当焦点在输入框时,自动输入法自动为该所设置的输入法。望各位高手们尽快给我回复,不胜感激!

coffeman
[140 byte] By [coffeman] at [2007-12-11]
# 1
观望中~~~~~~~
njscorpio-潜水王 at 2007-10-24 > top of Msdn China Tech,PowerBuilder,基础类...
# 2
观望中~~~~~~~
njscorpio-潜水王 at 2007-10-24 > top of Msdn China Tech,PowerBuilder,基础类...
# 3
继续观望
njscorpio-潜水王 at 2007-10-24 > top of Msdn China Tech,PowerBuilder,基础类...
# 4
function boolean ImmSimulateHotKey (UnsignedLong hWnd,UnsignedLong dwHotKeyID) library "IMM32.dll"
function unsignedlong GetKeyboardLayout (unsignedlong wLayout)library "user32.dll"
function boolean ImmIsIME(unsignedLong hklKeyboardLayout)library "IMM32.DLL"

//设置中文
ulong hklKeyboardLayout

hklKeyboardLayout=GetKeyboardLayout(0)
if not ImmIsIME(hklKeyboardLayout) then
ImmSimulateHotKey(handle ( adr_dragobject ),112)
end if
//设置英文
ulong hklKeyboardLayout

hklKeyboardLayout=GetKeyboardLayout(0)
if ImmIsIME(hklKeyboardLayout) then
ImmSimulateHotKey(handle ( adr_dragobject ),112)
end if
programbcb-datawindow at 2007-10-24 > top of Msdn China Tech,PowerBuilder,基础类...
# 5
楼上的!他要的不是这个啊
njscorpio-潜水王 at 2007-10-24 > top of Msdn China Tech,PowerBuilder,基础类...
# 6
建一表,输入法名称varchar(20)、输入法(16进制)char(8)、输入法(16进制)ulong、是否选种char(1).
从注册表中读取输入法。
string ls_preload[]
int temp,upper

RegistryKeys("HKEY_CURRENT_USER\keyboard layout\preload",ls_preload[])
upper=UpperBound(ls_preload)
FOR temp=1 TO upper
RegistryGet(&
"HKEY_CURRENT_USER\keyboard layout\preload\"+ls_preload[temp],&
"",ls_layout[temp])
RegistryGet(&
"HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\keyboard layouts\" &
+ls_layout[temp],"layout text",ls_layout_text[temp])

NEXT
存入表中,计算16进制->10进制。再做上选种标记。
声明:function boolean ActivateKeyboardLayout(long var1,uint var2 ) library "user32.dll"

需要时:ActivateKeyboardLayout(16进制的输入法,1)

williamyu at 2007-10-24 > top of Msdn China Tech,PowerBuilder,基础类...