2013-08-19 1 views
7

Я хочу увеличить случайное окно в левой части экрана. Могу ли я использовать функции Windows Aero из своего кода? Это окно может быть максимально таким, как с помощью мыши. Я просто хочу сделать это программно.Программно увеличить окно на половине экрана

Я использую C#, и я могу получить окна.

Если возможно, без подделки мыши или ввода клавиатуры.

+0

К сожалению, Microsoft в своей мудрости не предоставила никакого публичного API для функциональности aero snap. –

+1

Это можно сделать без p/invoke, просто не с легкостью, –

+0

Не можете ли вы имитировать это поведение, установив положение и размер окна, исходя из размера рабочего стола? Должно быть достаточно просто, просто не очень «чисто» – Kippie

ответ

3

Это не совсем то же самое, но фальсифицирует это хорошо:

ShowWindow(handle, SW_MAXIMIZE); 
// for a split second you might see a maximized window here 
MoveWindow(handle, 0, 0, Screen.PrimaryScreen.WorkingArea.Width/2, Screen.PrimaryScreen.WorkingArea.Height, true); 
5

Это можно сделать без p/invoke.

Попробуйте это:

Rectangle rect = Screen.PrimaryScreen.WorkingArea; 
rect.Width = rect.Width/2; 
Bounds = rect; 

Это поместит текущее окно в левой части основного экрана.

Затем просто добавьте это, чтобы поместить его вправо от экрана.

Location = new Point(rect.Width, 0); 
+0

Я не принимаю, потому что состояние окна не максимизировано. Я попробовал это без WinApi (установка FormWindowState и т. Д.), Но по какой-то причине это не работает. – Bitterblue

0

Потребует тяжелую в режиме реального времени размещения, особенно для не дочерних процессов. Пример - www.ishadow.com/vdm. Для ручной «фиксации» максимального положения окна MoveWindow (hWnd, startPos, 0, winWidth, winHeight, true) после ShowWindow (hWnd, SW_MAXIMIZE) обычно (попробуйте диспетчер задач в Windows 10) работает, как указано выше.

 Смежные вопросы

  • Нет связанных вопросов^_^