Foxtable(狐表)用户栏目专家坐堂 → [求助] 代码控制输入法的全角半角状态


  共有2020人关注过本帖树形打印复制链接

主题:[求助] 代码控制输入法的全角半角状态

帅哥哟,离线,有人找我吗?
lsy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
[求助] 代码控制输入法的全角半角状态  发帖心情 Post By:2016/1/8 14:29:00 [只看该作者]

输入法老是自动转成全角,想用代码控制转换全角半角的状态。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/8 14:50:00 [只看该作者]

mark 输入法半角转换

 

全局代码

 

<DllImport("imm32.dll")> _
Public Function ImmGetContext(hWnd As IntPtr) As IntPtr
End Function

<DllImport("imm32.dll")> _
Public Function ImmGetOpenStatus(hIMC As IntPtr) As Boolean
End Function

<DllImport("imm32.dll")> _
Public Function ImmGetConversionStatus(hIMC As IntPtr, ByRef conversion As Integer, ByRef sentence As Integer) As Boolean
End Function

<DllImport("imm32.dll")> _
Public Function ImmReleaseContext(hWnd As IntPtr, hIMC As IntPtr) As Boolean
End Function

<DllImport("imm32.dll")> _
Public Function ImmSetConversionStatus(hIMC As IntPtr, conversion As Integer, sentence As Integer) As Boolean
End Function

Const IME_CMODE_FULLSHAPE As Integer = &H8

Public Sub SetHalfShape(AHandle As IntPtr)
 Dim vIme As IntPtr = ImmGetContext(AHandle)
 If ImmGetOpenStatus(vIme) Then
  ' 输入法是打开的
  Dim vMode As Integer = 0, vSentence As Integer = 0
  If ImmGetConversionStatus(vIme, vMode, vSentence) Then
   ' 获取输入法状态
   If (vMode And IME_CMODE_FULLSHAPE) > 0 Then
    ' 是全角
    vMode = vMode And (Not IME_CMODE_FULLSHAPE)
    ImmSetConversionStatus(vIme, vMode, vSentence)
   End If
  End If
 End If
 ImmReleaseContext(AHandle, vIme)
End Sub

 

enter事件,或者textchanged事件

 

Dim txt = e.Form.Controls("TextBox1").basecontrol
SetHalfShape(txt.handle)


 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2016/1/8 14:54:00 [只看该作者]

谢谢。
难度不小啊。

 回到顶部