Console.SetWindowPosition -> центрировано (каждый раз)

Я пытаюсь настроить окно Консоли, выполненное с помощью моего C-резкого кода, чтобы быть центрированным каждый раз, когда генерируется код.

Я надеюсь, что в этом есть смысл.

Для этого требуется P / Invoke. Project + Add Reference, выберите System.Drawing. Опять для System.Windows.Forms. Добавьте новый class в свой проект и вставьте этот код:

using System; using System.ComponentModel; using System.Drawing; // NOTE: Project + Add Reference required using System.Windows.Forms; // NOTE: Project + Add Reference required using System.Runtime.InteropServices; public static class ConsoleUtils { public static void CenterConsole() { IntPtr hWin = GetConsoleWindow(); RECT rc; GetWindowRect(hWin, out rc); Screen scr = Screen.FromPoint(new Point(rc.left, rc.top)); int x = scr.WorkingArea.Left + (scr.WorkingArea.Width - (rc.right - rc.left)) / 2; int y = scr.WorkingArea.Top + (scr.WorkingArea.Height - (rc.bottom - rc.top)) / 2; MoveWindow(hWin, x, y, rc.right - rc.left, rc.bottom - rc.top, false); } // P/Invoke declarations private struct RECT { public int left, top, right, bottom; } [DllImport("kernel32.dll", SetLastError = true)] private static extern IntPtr GetConsoleWindow(); [DllImport("user32.dll", SetLastError = true)] private static extern bool GetWindowRect(IntPtr hWnd, out RECT rc); [DllImport("user32.dll", SetLastError = true)] private static extern bool MoveWindow(IntPtr hWnd, int x, int y, int w, int h, bool repaint); }