mirror of
https://github.com/BepInEx/BepInEx.git
synced 2026-10-21 21:43:23 +00:00
50 lines
2.2 KiB
C#
50 lines
2.2 KiB
C#
// --------------------------------------------------
|
|
// 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);
|
|
}
|