如何将字符串写入文件的资源

时间:2013-10-15 05:01:09

标签: vb.net file resources

如何使用Visual Basic .NET(2010)将字符串资源写入文件?

这是一种将字节数组写入资源的方法,但这不是我想要的。我想写一个字符串资源。

Imports System.Runtime.InteropServices
Module ResourceWriter
Private Function ToPtr(ByVal data As Object) As IntPtr
    Dim h As GCHandle = GCHandle.Alloc(data, GCHandleType.Pinned)
    Dim ptr As IntPtr
    Try
        ptr = h.AddrOfPinnedObject()
    Finally
        h.Free()
    End Try
    Return ptr

End Function

<DllImport("kernel32.dll", SetLastError:=True)> _
Private Function UpdateResource(ByVal hUpdate As IntPtr, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As UShort, ByVal lpData As IntPtr, ByVal cbData As UInteger) As Boolean
End Function
<DllImport("kernel32.dll", SetLastError:=True)> _
Private Function BeginUpdateResource(ByVal pFileName As String, <MarshalAs(UnmanagedType.Bool)> ByVal bDeleteExistingResources As Boolean) As IntPtr
End Function
<DllImport("kernel32.dll", SetLastError:=True)> _
Private Function EndUpdateResource(ByVal hUpdate As IntPtr, ByVal fDiscard As Boolean) As Boolean
End Function

Public Function WriteResource(ByVal filename As String, ByVal bytes As Byte()) As Boolean

    Try
        Dim handle As IntPtr = BeginUpdateResource(filename, False)
        Dim file1 As Byte() = bytes
        Dim fileptr As IntPtr = ToPtr(file1)
        Dim res As Boolean = UpdateResource(handle, "RT_RCDATA", "0", 0, fileptr, Convert.ToUInt32(file1.Length))
        EndUpdateResource(handle, False)
    Catch ex As Exception
        Return False
    End Try
    Return True

End Function
End Module

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式轻松地将字符串转换为字节数组:

System.Text.Encoding.UTF8.GetBytes(Str)

转发回来:

System.Text.Encoding.UTF8.GetString

或者,您可以在此处进行有关编码的深入对话:net-string-to-byte-array-c-sharp