Я пытаюсь установить расположение указанных окон. В настоящее время моя программа работает с большинством приложений (например, Chrome, Notepad), но имеет некоторые неожиданные результаты с консольными окнами .При вызове функции SetWindowPlacement в консольном окне, кажется, есть некоторые дополнительные смещения, добавленные к координате, которую я дал в качестве ввода.Интересно, имеет ли это какое-то отношение к какому-то особому стилю окна консоли.
Я пытался использовать и "rcWork" (координата рабочей области), и "rcMonitor" (координата монитора), и у обоих естьэто дополнительные смещения.
// Get this console window's hWnd (window handle).
IntPtr hWnd = GetConsoleWindow();
// Get information about the monitor (display) that the window is (mostly) displayed on.
// The .rcWork field contains the monitor's work area, i.e., the usable space excluding
var mi = MONITORINFO.Default;
GetMonitorInfo(MonitorFromWindow(hWnd, MONITOR_DEFAULTTOPRIMARY), ref mi);
// Get information about this window's current placement.
var wp = WINDOWPLACEMENT.Default;
GetWindowPlacement(hWnd, ref wp);
// Calculate the window's new position: snap right
wp.NormalPosition = new RECT()
{
Left = mi.rcWork.Left + (mi.rcWork.Right - mi.rcWork.Left) / 2,
Top = mi.rcWork.Top,
Right = mi.rcWork.Right,
Bottom = mi.rcWork.Bottom
};
// Place the window at the new position.
SetWindowPlacement(hWnd, ref wp);
Предполагается, что окно занимает всю правую половину экрана, но на самом деле есть некоторое смещение по краю.При манипулировании окнами других типов код работает как положено.Это происходит только с консольными окнами.