diff --git a/RESW File Code Generator/VSPackage/CustomTool/ReswFileCodeGenerator.cs b/RESW File Code Generator/VSPackage/CustomTool/ReswFileCodeGenerator.cs index 640b409..5f31f1d 100644 --- a/RESW File Code Generator/VSPackage/CustomTool/ReswFileCodeGenerator.cs +++ b/RESW File Code Generator/VSPackage/CustomTool/ReswFileCodeGenerator.cs @@ -35,12 +35,7 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool var codeGenerator = factory.Create(className, wszDefaultNamespace, bstrInputFileContents, codeDomProvider); var code = codeGenerator.GenerateCode(); - var data = Encoding.UTF8.GetBytes(code); - - rgbOutputFileContents[0] = Marshal.AllocCoTaskMem(data.Length); - Marshal.Copy(data, 0, rgbOutputFileContents[0], data.Length); - - pcbOutput = (uint)data.Length; + rgbOutputFileContents[0] = code.ConvertToIntPtr(out pcbOutput); } catch (Exception e) { diff --git a/RESW File Code Generator/VSPackage/CustomTool/StringExtension.cs b/RESW File Code Generator/VSPackage/CustomTool/StringExtension.cs new file mode 100644 index 0000000..e4e35e1 --- /dev/null +++ b/RESW File Code Generator/VSPackage/CustomTool/StringExtension.cs @@ -0,0 +1,18 @@ +using System; +using System.Runtime.InteropServices; +using System.Text; + +namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool +{ + public static class StringExtension + { + public static IntPtr ConvertToIntPtr(this string code, out uint pcbOutput) + { + var data = Encoding.Default.GetBytes(code); + pcbOutput = (uint)data.Length; + + var ptr = Marshal.StringToCoTaskMemAuto(code); + return ptr; + } + } +} \ No newline at end of file diff --git a/RESW File Code Generator/VSPackage/VSPackage.csproj b/RESW File Code Generator/VSPackage/VSPackage.csproj index 53d0d8c..b210b53 100644 --- a/RESW File Code Generator/VSPackage/VSPackage.csproj +++ b/RESW File Code Generator/VSPackage/VSPackage.csproj @@ -130,6 +130,7 @@ + True