如何在PB中切换中英文输入法数

 

函数声明:
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

 

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

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   编辑框中类似。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值