parent
e8f527d927
commit
82e5ff9874
@ -1,6 +1,6 @@
|
|||||||
Metadata-Version: 2.1
|
Metadata-Version: 2.1
|
||||||
Name: pyOpenRPA
|
Name: pyOpenRPA
|
||||||
Version: 1.1.1
|
Version: 1.1.2
|
||||||
Summary: First open source RPA platform for business
|
Summary: First open source RPA platform for business
|
||||||
Home-page: https://gitlab.com/UnicodeLabs/OpenRPA
|
Home-page: https://gitlab.com/UnicodeLabs/OpenRPA
|
||||||
Author: Ivan Maslov
|
Author: Ivan Maslov
|
@ -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")
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
Metadata-Version: 2.1
|
Metadata-Version: 2.1
|
||||||
Name: pyOpenRPA
|
Name: pyOpenRPA
|
||||||
Version: 1.1.1
|
Version: 1.1.2
|
||||||
Summary: First open source RPA platform for business
|
Summary: First open source RPA platform for business
|
||||||
Home-page: https://gitlab.com/UnicodeLabs/OpenRPA
|
Home-page: https://gitlab.com/UnicodeLabs/OpenRPA
|
||||||
Author: Ivan Maslov
|
Author: Ivan Maslov
|
@ -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…
Reference in new issue