vb.net에서 MFC dll을 써서 이지트랜스로 번역해서 결과물을 가져오고 싶습니다.
그런데 아무리찾아봐도 방법을 모르겠습니다.
Imports System.Runtime.InteropServices
Private Declare Fu*nction Translate Lib "ezTransXP.dll" (ByRef cszJapanese As String, ByVal szKorean As String, ByRef nBufSize As Int32) As Integer
Private Declare Sub OnPluginInit Lib "ezTransXP.dll" (ByRef HWND As IntPtr, ByVal cszSettingStringBuffer As String)
Private Declare Sub OnPluginClose Lib "ezTransXP.dll" ()
Dim szKorean As String = ""
Dim cszJapanese As String = "こんにちは"
이렇게하고 폼로딩에
OnPluginInit(Me.Handle, cszSettingStringBuffer)
Public Shared Fu*nction encode(ByVal str As String) As String
Dim utf8Encoding As New System.Text.UTF8Encoding(True)
Dim encodedString() As Byte
encodedString = utf8Encoding.GetBytes(str)
Return utf8Encoding.GetString(encodedString)
End Fu*nction '유니코드 인코딩 펑션
버튼누르면 실행
Dim nbuff As IntPtr = 2048
Dim cc As Boolean = False
cc = Translate(cszJapanese, szKorean, nbuff)
RTBTText.Text = cc
RTB2Text.Text=szKorean
이렇게하면
텍스트박스에 True라고 뜹니다(에러없이 번역된 듯함)
그런데 2번째 텍스트박스에는 아무것도 안뜹니다.(szKorean string에 번역된게 들어오는 게 아니었나요?!)
어떻게해야 번역결과물을 가져올 수 있나요?
약간의 개조를 했습니다..
OnPluginInit(Me.Handle, 0)
Dim nbuff As IntPtr = 0
Dim cszJapanese As Byte() = System.Text.Encoding.GetEncoding(932).GetBytes("こんにちは")
Dim szKorean As Byte()
Array.Resize(szKorean, cszJapanese.Length * 10) '크기가 작으면 제대로 출력이 안되서 크기를 좀 많이 늘립니다.
Translate(cszJapanese, szKorean, nbuff)
Dim t_1 As String = System.Text.Encoding.GetEncoding(51949).GetString(szKorean)