Перемещение окон на второй виртуальный рабочий стол в Win10
У меня есть несколько запущенных, из автозагрузки, приложений ConEmu (8 штук). Их руками переношу на второй рабочий стол, что неудобно.
Хочу автоматизировать перемещение окон на второй рабочий стол.
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Действия:
- Для перемещения окон использую модуль pyvda
- Для поиска запущенных процессов
ConEmuиспользую psutil - Для работы с окнами использую win32gui и pywin32. Они нужны для получения хэндлеров окон (
hwnd) у процессов, чтобы по ним можно было перенести окна
Установка дополнительных модулей:
pip install pyvda
pip install psutil
pip install win32gui
pip install pywin32
import psutil
import pyvda
import win32gui
import win32process
NEED_WINDOW_DESKTOP_NUMBER = 2
def get_hwnd_for_pid(pid: int):
def callback(hwnd: int, hwnds: list):
if win32gui.IsWindowVisible(hwnd) and win32gui.IsWindowEnabled(hwnd):
_, found_pid = win32process.GetWindowThreadProcessId(hwnd)
if found_pid == pid:
hwnds.append(hwnd)
return True
return True
hwnds = []
win32gui.EnumWindows(callback, hwnds)
return hwnds[0] if hwnds else -1
for proc in psutil.process_iter():
if not proc.is_running() or proc.name() != 'ConEmu.exe':
continue
hwnd = get_hwnd_for_pid(proc.pid)
if hwnd == -1 or pyvda.GetWindowDesktopNumber(hwnd) == NEED_WINDOW_DESKTOP_NUMBER:
continue
print(f'Moved window (pid={proc.pid}) to window desktop #{NEED_WINDOW_DESKTOP_NUMBER}')
pyvda.MoveWindowToDesktopNumber(hwnd, NEED_WINDOW_DESKTOP_NUMBER)