summaryrefslogtreecommitdiffstats
path: root/src/windows
diff options
context:
space:
mode:
Diffstat (limited to 'src/windows')
-rw-r--r--src/windows/ogOperations.py32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/windows/ogOperations.py b/src/windows/ogOperations.py
index 8c98da7..6396811 100644
--- a/src/windows/ogOperations.py
+++ b/src/windows/ogOperations.py
@@ -8,11 +8,13 @@
import os
import ctypes
+import pythoncom
import subprocess
from subprocess import CalledProcessError
import multiprocessing as mp
from multiprocessing import Process, freeze_support
from src.log import OgError
+import wmi
from PIL import Image, ImageDraw
from pystray import Icon, Menu, MenuItem
@@ -64,6 +66,7 @@ def create_systray():
class OgWindowsOperations:
def __init__(self):
+ self.session = False
freeze_support()
mp.set_start_method('spawn')
self.systray_p = Process(target=create_systray, daemon=True)
@@ -125,4 +128,31 @@ class OgWindowsOperations:
raise OgError('Function not implemented')
def refresh(self, ogRest):
- return {"status": "WIN"}
+ if self.session:
+ session_value = 'WINS'
+ else:
+ session_value = 'WIN'
+ return {"status": session_value}
+
+ def check_interactive_session_change(self):
+ old_status = self.session
+ pythoncom.CoInitialize()
+ has_logged_user = False
+ try:
+ c = wmi.WMI()
+ sessions = c.Win32_LogonSession(LogonType=2)
+
+ for session in sessions:
+ if has_logged_user:
+ break
+ for user in session.associators("Win32_LoggedOnUser"):
+ if user and user.AccountType == 1:
+ has_logged_user = True
+ break
+ finally:
+ pythoncom.CoUninitialize()
+ self.session = has_logged_user
+
+ if self.session != old_status:
+ return self.session
+ return None