diff --git a/SrcMod/Shell/Interop/Kernel32.cs b/SrcMod/Shell/Interop/Kernel32.cs index 1d32717..82110c7 100644 --- a/SrcMod/Shell/Interop/Kernel32.cs +++ b/SrcMod/Shell/Interop/Kernel32.cs @@ -4,7 +4,7 @@ internal static partial class Kernel32 { [LibraryImport("kernel32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] - public static partial bool GetConsoleScreenBufferInfo(nint hConsoleOutput); + public static partial bool GetConsoleScreenBufferInfo(nint hConsoleOutput, out ConsoleScreenBufferInfo lpConsoleScreenBufferInfo); [LibraryImport("kernel32.dll", SetLastError = true)] public static partial uint GetFinalPathNameByHandleA(nint hFile, [MarshalAs(UnmanagedType.LPTStr)] string lpszFilePath, diff --git a/SrcMod/Shell/Interop/ObjectModels/ConsoleScreenBufferInfo.cs b/SrcMod/Shell/Interop/ObjectModels/ConsoleScreenBufferInfo.cs index fd0bfe8..de5fbcf 100644 --- a/SrcMod/Shell/Interop/ObjectModels/ConsoleScreenBufferInfo.cs +++ b/SrcMod/Shell/Interop/ObjectModels/ConsoleScreenBufferInfo.cs @@ -1,6 +1,15 @@ namespace SrcMod.Shell.Interop.ObjectModels; +[StructLayout(LayoutKind.Sequential)] internal struct ConsoleScreenBufferInfo { - + [MarshalAs(UnmanagedType.LPStruct)] + public Coord dwSize; + [MarshalAs(UnmanagedType.LPStruct)] + public Coord dwCursorPosition; + public int wAttributes; + [MarshalAs(UnmanagedType.LPStruct)] + public SmallRect srWindow; + [MarshalAs(UnmanagedType.LPStruct)] + public Coord dwMaximumWindowSize; } diff --git a/SrcMod/Shell/Interop/ObjectModels/Coord.cs b/SrcMod/Shell/Interop/ObjectModels/Coord.cs index 4ba4013..334593b 100644 --- a/SrcMod/Shell/Interop/ObjectModels/Coord.cs +++ b/SrcMod/Shell/Interop/ObjectModels/Coord.cs @@ -1,6 +1,8 @@ namespace SrcMod.Shell.Interop.ObjectModels; +[StructLayout(LayoutKind.Sequential)] internal struct Coord { - + public short X; + public short Y; } diff --git a/SrcMod/Shell/Interop/ObjectModels/SmallRect.cs b/SrcMod/Shell/Interop/ObjectModels/SmallRect.cs index d1276f8..1e760ba 100644 --- a/SrcMod/Shell/Interop/ObjectModels/SmallRect.cs +++ b/SrcMod/Shell/Interop/ObjectModels/SmallRect.cs @@ -1,6 +1,10 @@ namespace SrcMod.Shell.Interop.ObjectModels; +[StructLayout(LayoutKind.Sequential)] internal struct SmallRect { - + public short Left; + public short Top; + public short Right; + public short Bottom; } diff --git a/SrcMod/Shell/Miscellaneous/GlobalUsings.cs b/SrcMod/Shell/Miscellaneous/GlobalUsings.cs index b5c13b0..c795201 100644 --- a/SrcMod/Shell/Miscellaneous/GlobalUsings.cs +++ b/SrcMod/Shell/Miscellaneous/GlobalUsings.cs @@ -6,6 +6,7 @@ global using SharpCompress.Archives.SevenZip; global using SharpCompress.Readers; global using SrcMod.Shell.Extensions; global using SrcMod.Shell.Interop; +global using SrcMod.Shell.Interop.ObjectModels; global using SrcMod.Shell.Modules; global using SrcMod.Shell.Modules.ObjectModels; global using SrcMod.Shell.ObjectModels;