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

 

 

你可能感兴趣的:(windows,function,String,user,输入法,library)