python нужно запустить notepad.exe сразу на рабочем столе 3(виртуальном)
import subprocess
import win32gui
import win32con
# Запускаем Notepad.exe
subprocess.Popen([r"C:\Users\denis\AppData\Roaming\Telegram Desktop\Telegram.exe"])
# Получаем дескриптор окна Notepad
hwnd = win32gui.FindWindow(None, "Telegram Desktop")
# Помещаем окно Notepad на рабочий стол 3
desktop = win32gui.GetDesktopWindow() # Получаем дескриптор рабочего стола
win32gui.SetParent(hwnd, desktop)
при данном коде ошибок нет - но переносит на тот же рабочий стол что и был - а надо на рабочий стол 3
прошу помочь!!
Ответы (1 шт):
Автор решения: for mok
→ Ссылка
Ответ найден:
Отсюда : Перемещение окон на второй виртуальный рабочий стол в Win10
import psutil
import win32gui
import win32process
from pyvda import AppView, VirtualDesktop
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() not in ['Telegram.exe']:
continue
hwnd = get_hwnd_for_pid(proc.pid)
app_view = AppView(hwnd)
# If the window is already on the desired desktop
if hwnd == -1 or app_view.desktop.number == NEED_WINDOW_DESKTOP_NUMBER:
continue
print(f'Moved window (pid={proc.pid}) to window desktop #{NEED_WINDOW_DESKTOP_NUMBER}')
app_view.move(VirtualDesktop(NEED_WINDOW_DESKTOP_NUMBER))