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))
→ Ссылка