Уведомления

Группа в Telegram: @pythonsu

#1 Март 16, 2022 21:27:47

usmesn
Зарегистрирован: 2020-04-28
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск двух разных приложений на пк к которому подключены два монитора

Приветствую всех господа программисты!!!!

Возникла такая задача, запустить скриптом два батника А.bat и В.bat(один на одном, второй на втором мониторе), которые в сою очередь стартуют соответствующие ярлыки указанных приложений . Ярлыки используются потому, что в свойствах ярлыка можно указать раскрыть приложение во весь экран(принципиально важно). Что сделано:

Python
Выделить код

 import screeninfo
import subprocess
import argparse
import sys
import os
 
 
def return_list_monitor():
    monitors = []
    for monitor in screeninfo.get_monitors():
        monitors.append(monitor.name)
    return monitors
 
if __name__ == "__main__":
    mon = return_list_monitor()
    app1 = r'C:\Users\username\Desktop\app1.bat'
    app2 = r'C:\Users\username\Desktop\app2.bat'
А что дальше делать - непонятно. Имена мониторов получаю, к примеру \.\DISPLAY1 и \.\DISPLAY2. Как заставить запустить один батник в одном месте, другой в другом - не ясно. Например функция Popen имеет параметр stdout - как его переопределить на конкретный моник - не понимаю(вероятно это невозможно), есть параметр preexec_fn=None - пользовательская функция, выполняемая до запуска программы, так же не ясно как направить поток выводы на моник. Может вообще это кто делал не средствами питона?
Буду рад любой помощи.

Отредактировано usmesn (Март 16, 2022 21:28:43)

Офлайн

#2 Март 19, 2022 16:17:21

mixer
От:
Зарегистрирован: 2010-09-29
Сообщения: 4
Репутация: +  1  -
Профиль   Отправить e-mail  

Запуск двух разных приложений на пк к которому подключены два монитора

Может запустить батник, подождать секунду.
Получить хэндл окна через GetForegroundWindow и переместить с помощью SetWindowPos на нужный монитор?
Координаты в переменной monitor вроде есть



Офлайн

#3 Март 19, 2022 20:56:09

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1348
Репутация: +  118  -
Профиль   Отправить e-mail  

Запуск двух разных приложений на пк к которому подключены два монитора

mixer
Зарегистрирован: 2010-09-29
2 сообщения за 12 лет?
Почему именно сейчас стало актуально что-то здесь ответить?

Офлайн

#4 Март 20, 2022 02:10:18

mixer
От:
Зарегистрирован: 2010-09-29
Сообщения: 4
Репутация: +  1  -
Профиль   Отправить e-mail  

Запуск двух разных приложений на пк к которому подключены два монитора

У меня работает, как раз два моника стоит. Нехорошо конечно то что мы ждем секунду открытия окна и берем хендл верхнего. Но для какого-нибудь стартера программ наверное пойдет. Главное в процессе запуска мышкой по окнам не тыкать :)

 import time
import screeninfo
import os
# Python 3.6
import win32con
from win32gui import GetForegroundWindow, MoveWindow, ShowWindow
class RunApp:
    def __init__(self):
        self.monitors = [_ for _ in screeninfo.get_monitors()]
    def run(self, file_name, monitor_number):
        os.startfile(file_name)
        time.sleep(1)
        handle = GetForegroundWindow()
        monitor_number = monitor_number if monitor_number < len(self.monitors) else 0
        MoveWindow(handle, self.monitors[monitor_number].x, self.monitors[monitor_number].y,
                   self.monitors[monitor_number].width, self.monitors[monitor_number].height, win32con.SWP_SHOWWINDOW)
        ShowWindow(handle, win32con.SW_MAXIMIZE)
if __name__ == "__main__":
    ra = RunApp()
    ra.run(r'C:\2Work\q1.cmd', 0)
    ra.run(r'C:\2Work\q1.cmd', 1)



Отредактировано mixer (Март 20, 2022 02:22:17)

Офлайн

#5 Март 20, 2022 02:18:47

mixer
От:
Зарегистрирован: 2010-09-29
Сообщения: 4
Репутация: +  1  -
Профиль   Отправить e-mail  

Запуск двух разных приложений на пк к которому подключены два монитора

xam1816
2 сообщения за 12 лет?
Почему именно сейчас стало актуально что-то здесь ответить?
Сам немого удивлен. Пытался зарегаться а мыло уже в базе. :)
Давно когда то тыкался в Питон.
А тут ребенок сел за Питон, ну и я заодно учу для души.
Ну и полезно, небольшие задачки чужие для своего развития решать или обдумывать.



Отредактировано mixer (Март 20, 2022 02:19:04)

Офлайн

#6 Март 22, 2022 17:02:12

usmesn
Зарегистрирован: 2020-04-28
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск двух разных приложений на пк к которому подключены два монитора

mixer, спасибо за помощь, протестирую сообщу, на первый взгляд не плохо звучит. Не ждал уже никаких коментриев.

Офлайн

#7 Март 25, 2022 18:57:30

usmesn
Зарегистрирован: 2020-04-28
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск двух разных приложений на пк к которому подключены два монитора


mixer
спасибо тебе, все получилось.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version