6

I'm trying to set the Console window executed via my C-sharp code to be centered each and every time code is generated.

I hope that makes sense.

1 Answer 1

15

This requires P/Invoke. Project + Add Reference, select System.Drawing. Again for System.Windows.Forms. Add a new class to your project and paste this code:

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); } 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.