在PB中如何切换输入法

zyhtz 2002-10-19 08:21:46
比如把焦点切换到一个编辑框时,如何自动切换到你设置的输入法。也就是在程序中如何控制从一个输入法切换到另一个切换
...全文
443 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
balloonman2002 2002-10-21
  • 打赏
  • 举报
回复
1先在Local extenal function定义下列API
Function 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

如果是使用datawindow, 在itemchangedfocus event中
ulong hklKeyboardLayout
Choose Case dwo.name
Case chinese_text 需要中文输入的字段
hklKeyboardLayout=GetKeyboardLayout(0)
if not ImmIsIME(hklKeyboardLayout) then ImmSimulateHotKey(handle ( parent,112)
end if
Case Englist_text 英文输入字段
hklKeyboardLayout=GetKeyboardLayout(0)
if ImmIsIME(hklKeyboardLayout) then ImmSimulateHotKey(handle ( parent ),112)
end if
End Choose
在windows 编辑框中类似。

补充说明:这是网上很流行的例子,但是112好象不能切换,要改成16才行;
banalman 2002-10-21
  • 打赏
  • 举报
回复
int li_rownumber
string ls_rownumber
constant int IME_THotKey_IME_NonIME_Toggle=112
ulong hklCurrent
ulong hnd
li_rownumber=ldw_datawindow.getcolumn()
ls_rownumber=string(li_rownumber)
ls_rownumber=","+ls_rownumber+","
if match(ls_item_list,ls_rownumber) then
//切换到中文输入法
hklCurrent=GetKeyboardLayout(0)
if not ImmIsIME(hklCurrent) then
hnd=Handle(lw_window)
ImmSimulateHotKey(hnd,IME_THotKey_IME_NonIME_Toggle)
end if
else
//切换到英文输入法
hklCurrent=GetKeyboardLayout(0)
if ImmIsIME(hklCurrent) then
hnd=Handle(lw_window)
ImmSimulateHotKey(hnd,IME_THotKey_IME_NonIME_Toggle)
end if
end if



pufan 2002-10-19
  • 打赏
  • 举报
回复
函数声明:
function boolean ImmSimulateHotKey (ULong hWnd, ULong dwHotKeyID) library "IMM32.dll"
function ulong GetKeyboardLayout(ulong dwLayout) LIBRARY "user32.dll"
function boolean ImmIsIME(uLong hklKeyboardLayout) library "IMM32.DLL"

脚本如下:
constant int IME_THotKey_IME_NonIME_Toggle=112
ulong hklCurrent
ulong hnd

//切换到英文输入法
hklCurrent=GetKeyboardLayout(0)
if ImmIsIME(hklCurrent) then
hnd=Handle(parent)
ImmSimulateHotKey(hnd,IME_THotKey_IME_NonIME_Toggle)
end if

//切换到中文输入法
hklCurrent=GetKeyboardLayout(0)
if not ImmIsIME(hklCurrent) then
hnd=Handle(parent)
ImmSimulateHotKey(hnd,IME_THotKey_IME_NonIME_Toggle)
end if

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧