質問: Windowsでコンソールアプリケーションを作っています。 実行時にウィンドウ位置を変更したいのですがどうすればいいでしょうか? APIで行う方法しかないのでしょうか?
回答: Yasuhiro Nijiさんが提示されたリンク先ではウィンドウ位置の変更方法として`MoveWindow`.aspx)が提示されていますがこれは名前に反して移動だけでなくサイズ変更も強要されます。より柔軟な`SetWindowPos`.aspx)を提案します。こちらは、ウィンドウの上下関係、位置、サイズ、再描画を行うか、をフラグで個別指定できます。 その際、操作にはウィンドウハンドルが必要です。しかしリンク先で提示されている`Process.MainWindowHandle`はコンソールアプリケーションでは正しく機能しません。コンソールアプリケーションでは`GetConsoleWindow`で取得できます。 ``` [DllImport("kernel32.dll")] static extern IntPtr GetConsoleWindow(); [DllImport("user32.dll")] static extern bool SetWindowPos(IntPtr hwnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags); const int SWP_NOSIZE = 1; const int SWP_NOZORDER = 4; static void Main() { SetWindowPos(GetConsoleWindow(), IntPtr.Zero, 100, 100, 0, 0, SWP_NOSIZE | SWP_NOZORDER); } ```