vb.net实现日语汉字与假名之间的转换

以下代码是在某工程中需要在输入日语汉字时转换成对应的片假名,在网络上搜索到一段利用IFELanguage接口实现汉字与片假名互相转换的代码。

Imports System.Collections.Generic
Imports System.Linq
Imports System.Runtime.InteropServices
Imports System.Text
Imports System.Threading.Tasks
Module Module1

    <STAThread> _
    Sub Main()
        Dim ifelang As IFELanguage = Nothing
        Try
            ifelang = TryCast(Activator.CreateInstance(Type.GetTypeFromProgID("MSIME.Japan")), IFELanguage)
            Dim hr As Integer = ifelang.Open()
            If hr <> 0 Then
                Throw Marshal.GetExceptionForHR(hr)
            End If
            Dim yomigana As String
            yomigana = vbNullString
            hr = ifelang.GetPhonetic("東京は昨日雪が降りま1-211した。", 1, -1, yomigana)
            If hr <> 0 Then
                Throw Marshal.GetExceptionForHR(hr)
            End If
            Console.WriteLine(Convert.ToString("漢字の読み仮名:") & yomigana)

            Dim henkankouho As String
            henkankouho = vbNullString
            hr = ifelang.GetConversion("どようのひるはうなぎ", 1, -1, henkankouho)
            If hr <> 0 Then
                Throw Marshal.GetExceptionForHR(hr)
            End If
            Console.WriteLine(Convert.ToString("平仮名の変換候補:") & henkankouho)
            'uint mode = 0;
            'ifelang.GetConversionModeCaps(ref mode);
            ifelang.Close()

            Console.ReadLine()
        Catch ex As COMException
            If ifelang IsNot Nothing Then
                ifelang.Close()
            End If
        End Try
    End Sub
    ' IFELanguage2 Interface ID
    '[Guid("21164102-C24A-11d1-851A-00C04FCC6B14")]
    <ComImport> _
    <Guid("019F7152-E6DB-11d0-83C3-00C04FDDB82E")> _
    <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _
    Public Interface IFELanguage
        Function Open() As Integer
        Function Close() As Integer
        Function GetJMorphResult(dwRequest As UInteger, dwCMode As UInteger, cwchInput As Integer, <MarshalAs(UnmanagedType.LPWStr)> pwchInput As String, pfCInfo As IntPtr, ByRef ppResult As Object) As Integer
        Function GetConversionModeCaps(ByRef pdwCaps As UInteger) As Integer
        Function GetPhonetic(<MarshalAs(UnmanagedType.BStr)> [string] As String, start As Integer, length As Integer, <MarshalAs(UnmanagedType.BStr)> ByRef result As String) As Integer
        Function GetConversion(<MarshalAs(UnmanagedType.BStr)> [string] As String, start As Integer, length As Integer, <MarshalAs(UnmanagedType.BStr)> ByRef result As String) As Integer
    End Interface
End Module


你可能感兴趣的:(VB.NET)