半角与全角、简繁体中文字符串互相转化

imports Microsoft.VisualBasic

dim s as string= "苹果软件工作室"

= Strings.StrConv(s, VbStrConv.Wide, 0)                                    '半角转全角
= Strings.StrConv(s, VbStrConv.TraditionalChinese, 0)          ' 简体转繁体

= Strings.StrConv(s, VbStrConv.ProperCase, 0)                       '首字母大写
= Strings.StrConv(s, VbStrConv.Narrow , 0)                               '全角转半角
= Strings.StrConv(s, VbStrConv.SimplifiedChinese , 0)          '繁体转简体

以下代码为API方式自动把输入法转换为半角形式

 '声明一些API函数
    <Runtime.InteropServices.DllImport("imm32.dll")> _
    Private Shared Function ImmGetContext(ByVal hwnd As IntPtr) As IntPtr
    End Function

    <Runtime.InteropServices.DllImport("imm32.dll")> _
    Private Shared Function ImmGetOpenStatus(ByVal himc As IntPtr) As Boolean
    End Function

    <Runtime.InteropServices.DllImport("imm32.dll")> _
    Private Shared Function ImmSetOpenStatus(ByVal himc As IntPtr, ByVal b As Boolean) As Boolean
    End Function

    <Runtime.InteropServices.DllImport("imm32.dll")> _
    Private Shared Function ImmGetConversionStatus(ByVal himc As IntPtr, ByRef lpdw As Integer, ByRef lpdw2 As Integer) As Boolean
    End Function

    <Runtime.InteropServices.DllImport("imm32.dll")> _
    Private Shared Function ImmSimulateHotKey(ByVal hwnd As IntPtr, ByVal lngHotkey As Integer) As Integer
    End Function

    Private Const IME_CMODE_FULLSHAPE As Integer = &H8
    Private Const IME_CHOTKEY_SHAPE_TOGGLE As Integer = &H11

    '下面这个函数是检查输入法的全角半角状态
    Private Sub ChangeControlIme(ByVal h As IntPtr)
        Dim HIme As IntPtr = ImmGetContext(h)

        If ImmGetOpenStatus(HIme) Then  '如果输入法处于打开状态
            Dim iMode As Integer = 0
            Dim iSentence As Integer = 0
            Dim bSuccess As Boolean = ImmGetConversionStatus(HIme, iMode, iSentence) '检索输入法信息

            If bSuccess Then
                If (iMode And IME_CMODE_FULLSHAPE) > 0 Then    '如果是全角
                    ImmSimulateHotKey(h, IME_CHOTKEY_SHAPE_TOGGLE) '转换成半角
                End If
            End If
        End If
    End Sub

    Private Sub TextBox2_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.Enter
        ChangeControlIme(sender.Handle)
    End Sub


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值