123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- // --------------------------------------------------
- // UnityInjector - ConsoleEncoding.PInvoke.cs
- // Copyright (c) Usagirei 2015 - 2015
- // --------------------------------------------------
- using System;
- using System.Runtime.InteropServices;
- namespace UnityInjector.ConsoleUtil
- {
- // --------------------------------------------------
- // Code ported from
- // https://gist.github.com/asm256/9bfb88336a1433e2328a
- // Which in turn was seemingly ported from
- // http://jonskeet.uk/csharp/ebcdic/
- // using only safe (managed) code
- // --------------------------------------------------
- internal partial class ConsoleEncoding
- {
- [DllImport("kernel32.dll")]
- private static extern uint GetConsoleOutputCP();
- [DllImport("kernel32.dll")]
- private static extern uint GetACP();
- [DllImport("kernel32.dll", SetLastError = true)]
- private static extern int MultiByteToWideChar(
- uint codePage,
- uint dwFlags,
- [In, MarshalAs(UnmanagedType.LPArray)] byte[] lpMultiByteStr,
- int cbMultiByte,
- [Out, MarshalAs(UnmanagedType.LPWStr)]
- char[] lpWideCharStr,
- int cchWideChar);
- [DllImport("kernel32.dll")]
- private static extern IntPtr SetConsoleOutputCP(uint codepage);
- [DllImport("kernel32.dll", SetLastError = true)]
- private static extern int WideCharToMultiByte(
- uint codePage,
- uint dwFlags,
- [In, MarshalAs(UnmanagedType.LPWStr)] char[] lpWideCharStr,
- int cchWideChar,
- [Out, MarshalAs(UnmanagedType.LPArray)]
- byte[] lpMultiByteStr,
- int cbMultiByte,
- IntPtr lpDefaultChar,
- IntPtr lpUsedDefaultChar);
- }
- }
|