Управление окнами windows из консоли
Захотелось мне как-то с окнами поиграться… Чтобы бегали они по монитору… Если быть точным - по нескольким мониторам…
Ну а, если уж совсем точным быть - чтобы несколько программ запускались в нескольких мониторах, и разворачивались на весь экран в этих мониторах… И чтоб всё это было без человеческого участия.. Ну или с минимальным… Зеленая кнопка. Одна. И не больше.
Маленькое “но”. Сохранение позиции, открытие программы в нужном мониторе (разворачивание на весь экран) и закрытие… не приводили к желаемому результату - После повторного запуска, программа все равно запускалась на “основном” мониторе…
Мониторы все расположены “горизонтально”.. То есть чисто теоретически задача должна свестись к смещению окна вправо на ширину монитора * (номер монитора-1) и разворачиванию на весь экран.
Недолгие поиски увенчались успехом. Утилита cmdow.exe позволяет кроме этих двух “оконных операций” производить еще более десятка управляющий и действий с окнами windows из консоли.
Опции запуска программы cmdow.exe разделены на четыре группы:
1. Получение информации об окнах
2. Групповые операции с окнами
3. Управление отдельным окном
4. Запуск приложений при помощи Cmdow
Краткий, но достаточный для работы “help” зашит в саму программу - ознакомиться с ним можно, выполнив программу с параметром:
cmdow.exe /?
CMDOW [window | /T] [/B] [/F] [/P]
CMDOW /TH | /TV | /MA | /CW | /UW | /AT | /FS | /WM
CMDOW window {[/ACT] [/INA] [/ENA] [/DIS] [/VIS] [/HID] [/MIN] [/MAX] [/RES]
[/TOP] [/NOT] [/REN caption] [/MOV left top] [/SIZ width height] [/CLS]
[/END]}
CMDOW /RUN [state] file [args]
window List specified window (if omitted, all windows are listed).
/T List windows only shown on the taskbar.
/B List windows using bare format (no heading information).
/F List windows showing full information (don't truncate any fields).
/P List windows showing position and size (left, top, width and height).
/TH Tile windows horizontally. /TV Tile windows vertically.
/MA Minimize all windows. /CW Cascade windows.
/UW Undo tile/minimize/cascade. /AT Intelligent [Alt]-[Tab]
/FS Switch to full screen mode. /WM Switch to window mode.
/ACT Activate specified window. /INA Inactivate specified window.
/ENA Enable specified window. /DIS Disable specified window.
/VIS Unhide specified window. /HID Hide specified window.
/MIN Minimize specified window. /MAX Maximize specified window.
/RES Restore specified window. /REN Rename specified window.
/TOP Make window always on top. /NOT Make window not always on top.
/MOV Move specified window. /SIZ Resize specified window.
/CLS Close specified window. /END Kill process linked to window.
/RUN Executes or opens specified file using associated application.
state Initial show state of window (/MIN, /MAX or /HID). Default is normal.
args Optional commandline arguments passed to launched application.
Specify a window by its caption (case insensitive) or handle in hex format.
The At symbol '@' may be used to refer to this window. For more help on any
parameter use CMDOW /?
<parameter>. Eg CMDOW /? /RUN or CMDOW /? window.</parameter>
Как и следовало ожидать, перемещение окна и увеличение на весь экран приводит к его разворачиванию в нужном мониторе:
start “Программа второго монитора”
ping 127.0.0.1 -n 3 >nul
cmdow.exe “Программа второго монитора” /MOV 1280 0
cmdow.exe “Программа второго монитора” /MAX
Пинг во второй строке выполняет функцию задержки - для запуска программы требуется некоторое время. Если CMDOW не найдет нужное окно, она выдаст ошибку в консоль, но выполнение дальнейших команд продолжится.
Поместив аналогичные строки для каждой программы в нехитрый bat-файл, получаем “Зеленую кнопку”, которая запускает и расставляет приложения по нескольким мониторам “на весь экран”.
