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)
UPD。AttributeError: module 'pyvda' has no attribute 'GetWindowDesktopNumber'
在新版本pyvda中(目前是 version 0.2.4)会有一个错误AttributeError: module 'pyvda' has no attribute 'GetWindowDesktopNumber',因为。库 API 已更改,现在解决方案将是:
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 ['ConEmu.exe', 'ConEmu64.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))
行动:
pip install pyvda==0.0.8)ConEmu我使用psutil来查找正在运行的进程。hwnd从进程中获取窗口处理程序 ( ),以便可以使用它们移动窗口安装附加模块:
执行:
UPD。
AttributeError: module 'pyvda' has no attribute 'GetWindowDesktopNumber'在新版本
pyvda中(目前是 version0.2.4)会有一个错误AttributeError: module 'pyvda' has no attribute 'GetWindowDesktopNumber',因为。库 API 已更改,现在解决方案将是: