Программное обеспечение Windows для перемещения любого окна между несколькими мониторами (экранами) с помощью клавиш, НО без изменения размера перемещаемого окна.

У меня многоэкранный компьютер:

введите описание изображения здесь

и я использую WindowPad для перемещения (расстановки) любого окна на экране, и эта программа тоже способна перемещать их между мониторами , нажав WinKey+ Enter.

Проблема в том , что перемещенное окно масштабируется (изменяется) до соответствующего размера нового монитора, как вы можете видеть на двух изображениях ниже. С экрана 1280x1024:

введите описание изображения здесь

на экран 1920x1200:

введите описание изображения здесь

Обратите внимание на измененный размер окна консоли Putty SSH . Это не то, чего я хочу.

Перемещение окон без использования мыши чрезвычайно полезно для меня, но я не смог найти практический способ сделать это без изменения размера этого окна. Всплывающее меню
, которое есть в большинстве окон, недействительно, потому что, даже когда я могу перемещать окна, это перемещение слишком медленное (в этом случае я предпочитаю использовать мышь):

введите описание изображения здесь

WinKey+ Shift+ arrowне работают на моей Windows 7 SP1, не знаю почему.

Идеи приветствуются.

Без масштабирования, как поместится развернутое окно на экране 1, когда вы переместите его на экран 6, или вы хотите, чтобы окно охватывало несколько мониторов?
Ты прав, @Timmy, я не думал об этом. К счастью, я нашел решение: я успешно модифицировал исходный код WindowPad, и теперь он перемещает любое окно без изменения его масштаба; и максимизированные окна остаются максимизированными между мониторами. Я пытаюсь узнать, следует ли публиковать мое решение здесь, в SuperUser, или на любом другом форуме, таком как StackOverFlow (при условии, что это ответ программирования). Просто дайте мне несколько дней, и я опубликую здесь свой метод.
Тимми, я добавил свой ответ здесь. Он основан на исходной модификации. Я буду добавлять предварительно скомпилированные .exeфайлы в репозитории форумов AutoHotKey, если буду знать, как это сделать. Я полагаю, у SuperUser нет хранилища для файлов, поэтому я не могу думать о другом.
Хорошо сделано! Я думаю, что оставить здесь код — это нормально, если есть четкие инструкции о том, как его выполнить. Вы также можете хранить его на Github

Ответы (3)

Вам не нужно специальное программное обеспечение

Win+Shift+стрелка влево: переместить окно на монитор слева
Win+Shift+стрелка вправо: переместить окно на монитор справа

Кроме того, Windows-P открывает переключатель дисплея:

введите описание изображения здесь

Только компьютер — это вариант по умолчанию, и название говорит само за себя.
Дублировать клонирует ваш экран на подключенный дополнительный дисплей, монитор или проектор.
Расширение расширяет рабочий стол, чтобы вы могли освободить место для дополнительных окон.
Проектор только выключает ЖК-дисплей вашего ноутбука и превращает проектор в ваш монитор

Win+Shift+стрелка влево/вправо не работают на моем компьютере. А Windows+P не действует, так как у меня 6 экранов. Добавил информацию в исходный пост.

Я изменил исходный код WindowPad , чтобы не изменять размер окон при перемещении или смене монитора.

Вот шаги:

  • Скачайте по ссылке выше и разархивируйте.

  • Чтобы отключить изменение размера окон при перемещении редактирования \source\WindowPad.ahkдля изменения (Windows Notepad в порядке):

    ; Move and resize.
    WinMove,,, newx, newy, neww, newh
    

to (обратите внимание на комментарии с ;характером):

        ; Move and resize.
;        WinMove,,, newx, newy, neww, newh
        WinMove,,, newx, newy, w, h

и изменить:

wp_CalcNewSizeAndPosition:
    ; Calculate desired size.
    neww := restore_w != "" ? restore_w : Round(monWidth * widthFactor)
    newh := restore_h != "" ? restore_h : Round(monHeight * heightFactor)

to (мы также сохраняем некоторые строки, используя комментарии):

wp_CalcNewSizeAndPosition:
    ; Calculate desired size.
;    neww := restore_w != "" ? restore_w : Round(monWidth * widthFactor)
;    newh := restore_h != "" ? restore_h : Round(monHeight * heightFactor)
    neww := w
    newh := h
  • Чтобы отключить изменение размера окон при изменении редактирования экрана \source\WindowPad.ahkна изменение:

; Calculate new size. if (wp_IsResizable()) { w := Round(w*(mdw/msw)) h := Round(h*(mdh/msh)) }

к:

    ; Calculate new size.
    if (wp_IsResizable()) {
;        w := Round(w*(mdw/msw))
;        h := Round(h*(mdh/msh))
        w := w
        h := h
    }

(довольно нелепое изменение, но оно помогает понять смысл модификации)

  • Теперь у вас есть файл .ahk, который вы можете запустить, если у вас установлен AutoHotKey . Или скомпилируйте его.exe с помощью той же программы ( Convert .ahk to .exe).

  • И небольшое улучшение: вот эти строчки мешают поставить в трей свою иконку (ее можно выбрать при компиляции .ahkфайла, но она там не появится):

.

if A_IsCompiled  ; Load icons from my custom WindowPad.exe.
{
; Default icon is 32x32, so doesn't look good in the tray.
Menu, Tray, Icon, %A_ScriptFullPath%, 2
}
else if (A_LineFile = A_ScriptFullPath)
{   ; Set the tray icon, but only if not included in some other script.
wp_SetTrayIcon(true)
; Use OnMessage to catch "Suspend Hotkeys" or "Pause Script"
; so the "disabled" icon can be used.
OnMessage(0x111, "WM_COMMAND")
}

поэтому просто прокомментируйте их все:

;    if A_IsCompiled  ; Load icons from my custom WindowPad.exe.
;    {
;        ; Default icon is 32x32, so doesn't look good in the tray.
;        Menu, Tray, Icon, %A_ScriptFullPath%, 2
;    }
;    else if (A_LineFile = A_ScriptFullPath)
;    {   ; Set the tray icon, but only if not included in some other script.
;        wp_SetTrayIcon(true)
;        ; Use OnMessage to catch "Suspend Hotkeys" or "Pause Script"
;        ; so the "disabled" icon can be used.
;        OnMessage(0x111, "WM_COMMAND")
;    }

и теперь вы можете скомпилировать свой файл .ahk, .exeкоторый будет иметь предпочитаемый значок для файла и для значка в трее (каждый значок AutoHotKey в трее имеет один и тот же зеленый цвет H, если он не указан).

Моя компиляция в .exe работает фантастически. Теперь WindowPad — лучшая программа, которую я когда-либо видел, для перемещения и расположения окон даже на нескольких экранах.

Пожалуйста, сообщайте об ошибках, если вы их найдете.

Вы также можете использовать UltraMon (бесплатный, Windows, графический интерфейс), чтобы настроить сочетание клавиш для перемещения окна на следующий или предыдущий монитор.

введите описание изображения здесь

Как сказал Ян, в Windows 7 есть несколько встроенных ярлыков, которые я не использую, потому что я привязываюсь Winк щелчку левой кнопкой мыши:

  • Win+ Shift+ Arrow Leftпереместить окно на левый монитор
  • Win+ Shift+ Arrow Rightдля перемещения окна на правый монитор

Как и у вас, у меня 6 мониторов, поэтому мне также нужно переместить окно вниз/вверх в моем случае между мониторами 3 и 4 и между мониторами 5 и 6:

введите описание изображения здесь

Я видел, что у AHK могут быть некоторые функции для него, например WindowPad и WindowPadX , но мне непонятно, как установить такое сочетание клавиш, поэтому некоторое время назад я задал вопрос здесь: Переместить окно на нижний/верхний монитор с помощью ярлык в винде