|
|
|
@ -5,8 +5,12 @@ import pdb
|
|
|
|
|
import os
|
|
|
|
|
import sys
|
|
|
|
|
import subprocess
|
|
|
|
|
import win32ts
|
|
|
|
|
#Глобальная переменная - все глобальные значения программы
|
|
|
|
|
global mGlobalDict
|
|
|
|
|
|
|
|
|
|
#Включить WTS (WIN32TS)
|
|
|
|
|
mWTSServer = lWTSServer = win32ts.WTSOpenServer("localhost")
|
|
|
|
|
#{
|
|
|
|
|
# actionList:
|
|
|
|
|
# [
|
|
|
|
@ -25,6 +29,9 @@ global mGlobalDict
|
|
|
|
|
# },
|
|
|
|
|
# {
|
|
|
|
|
# type: <ActivityRestartOrchestrator>
|
|
|
|
|
# },
|
|
|
|
|
# {
|
|
|
|
|
# type: <ActivitySessionCheckSetActive>
|
|
|
|
|
# }
|
|
|
|
|
# ]
|
|
|
|
|
#
|
|
|
|
@ -65,5 +72,24 @@ def ProcessingRun(inConfigurationDict):
|
|
|
|
|
if lItem["type"]=="ActivityRestartOrchestrator":
|
|
|
|
|
os.execl(sys.executable,os.path.abspath(__file__),*sys.argv)
|
|
|
|
|
sys.exit(0)
|
|
|
|
|
#Обработка команды ActivitySessionCheckSetActive
|
|
|
|
|
if lItem["type"]=="ActivitySessionCheckSetActive":
|
|
|
|
|
lResult["actionListResult"][-1] = {**lResult["actionListResult"][-1], **{"result":{"IsActivated":False}}}
|
|
|
|
|
lPID = os.getpid()
|
|
|
|
|
#pdb.set_trace()
|
|
|
|
|
lSessionId = win32ts.ProcessIdToSessionId(lPID)
|
|
|
|
|
lSessionList = win32ts.WTSEnumerateSessions(lWTSServer)
|
|
|
|
|
#При попытке закрыть сервер возникает ошибка
|
|
|
|
|
#win32ts.WTSCloseServer(lWTSServer)
|
|
|
|
|
#Наложить фильтр
|
|
|
|
|
lSessionFiltered = [d for d in lSessionList if d["SessionId"]==lSessionId]
|
|
|
|
|
#Выполнить переход в активное состояние , если State != 0
|
|
|
|
|
if lSessionFiltered[0]["State"] != 0:
|
|
|
|
|
lCMDCodeTSCON = "tscon " + str(lSeessionId) + " /dest:console"
|
|
|
|
|
lCMDCode="cmd /c "+lCMDCodeTSCON
|
|
|
|
|
subprocess.Popen(lCMDCode)
|
|
|
|
|
lResult["actionListResult"][-1] = {**lResult["actionListResult"][-1], **{"result":{"IsActivated":True}}}
|
|
|
|
|
#Выключить соединение
|
|
|
|
|
|
|
|
|
|
#Вернуть результат
|
|
|
|
|
return lResult
|
|
|
|
|
return lResult
|
|
|
|
|