Запустить процесс на другом рабочем столе, Python, Windows

Я создал второй рабочий стол

import win32api, win32con, win32gui, win32service, win32process
import pywintypes
import traceback, thread, time, cStringIO


k = win32service.CreateDesktop("ABCD2", 0, win32con.MAXIMUM_ALLOWED, None)

Как запустить процесс, скажем, calc.exe на рабочем столе "ABCD2"?


person Alex    schedule 16.05.2014    source источник
comment
ты имеешь в виду рабочий стол ABCD2, не?   -  person Antti Haapala    schedule 16.05.2014
comment
Ах да, конечно, ABCD2- я поправил   -  person Alex    schedule 16.05.2014


Ответы (1)


Вы можете установить STARTUPINFO.lpDesktop на имя этого рабочего стола:

import win32api, win32con, win32gui, win32service, win32process
#import pywintypes
#import traceback, thread, time, cStringIO


hDesktop = win32service.CreateDesktop("ABCD2",
                                      0,
                                      win32con.GENERIC_ALL,
                                      None)

win32api.Sleep(500)
StartInfo = win32process.STARTUPINFO()
StartInfo.lpDesktop = "ABCD2"

ProcInfo = win32process.CreateProcess(
    None,
    "mspaint.exe",
    None,
    None,
    True,
    win32con.NORMAL_PRIORITY_CLASS | win32con.CREATE_NEW_CONSOLE,
    None,
    None,
    StartInfo)
person Community    schedule 16.05.2014
comment
Великолепно! Работает как шарм! Большое спасибо - person Alex; 16.05.2014