# Add Safe turn off functionallity (can kill by taskkill /im ... without /f - force kill)

# Add Session logoff in terminator too
dev-linux
Ivan Maslov 4 years ago
parent 78cb13d462
commit d50d1d6fde

@ -0,0 +1,62 @@
# How to use
# from pyOpenRPA.Tools import Terminator
# Terminator.Init(inLogger=None)
# Terminator.IsSignalClose() # True - WM_CLOSE SIGNAL has come
# Terminator.SessionLogoff() # Logoff the session
import win32con
import win32gui
import os
gIsSignalCloseBool = False
gLogger = None
gWindowTitleStr = "PythonTerminator" # Title of the phantom window
gWindowDescriptionStr = "pyOpenRPA library for safe turn off the program (by send the WM_CLOSE signal from task kill)" # Description of the phantom window
# Init the terminator
def Init(inLogger=None):
global gLogger
global gIsSignalCloseBool
gIsSignalCloseBool = False # Init default
gLogger = inLogger
#import sys
#import time
#import atexit
import threading
#atexit.register(print, 'PYTHON SPAM APP: SHUTDOWN')
shutdown_thread = threading.Thread(target=shutdown_monitor)
shutdown_thread.start()
#shutdown_thread.join()
#shutdown_monitor()
# Terminator.IsSignalClose() # True - WM_CLOSE SIGNAL has come
def IsSignalClose():
global gIsSignalCloseBool # Init the global variable
return gIsSignalCloseBool # Return the result
# Terminator.SessionLogoff() # Logoff the session
def SessionLogoff():
os.system("shutdown /l")
# Technical function
def shutdown_monitor():
global gIsSignalCloseBool # Init the global variable
global gLogger
def wndproc(hwnd, msg, wparam, lparam):
if msg == win32con.WM_CLOSE:
win32gui.DestroyWindow(hwnd)
return 0
elif msg == win32con.WM_DESTROY:
win32gui.PostQuitMessage(0)
return 0
return win32gui.DefWindowProc(hwnd, msg, wparam, lparam)
wc = win32gui.WNDCLASS()
wc.lpszClassName = gWindowTitleStr
wc.lpfnWndProc = wndproc
win32gui.RegisterClass(wc)
hwnd = win32gui.CreateWindow(gWindowTitleStr, gWindowDescriptionStr,
0, 0, 0, 0, 0, 0, 0, 0, None)
win32gui.PumpMessages()
gIsSignalCloseBool = True # WM_CLOSE message has come
if gLogger:
gLogger.info(f"Terminator: Program has recieve the close signal - safe exit")
Loading…
Cancel
Save