[python-win32] Detecting fast user switching

Arron Chapman - UnkwnDesign.Com unkwntech at unkwndesign.com
Sat Dec 13 13:37:41 CET 2008


I found Tim Golden's artical "See if my workstation is locked" 
http://timgolden.me.uk/python/win32_how_do_i/see_if_my_workstation_is_locked.html 
which got me most of the way to where I need to be, I want to detect 
both logout and login events, with some changes to the script provided 
above I ended up with 2 problems 1) I was able to detect the logout but 
not the login 2) it was a resource hog at 50% cpu usage (presumably 
because of the while 1:) here is what I have now:
import time, ctypes, Skype4Py
skype = Skype4Py.Skype()
def restoreMessages(messages):
    #for now lets just deal with skype, we'll add the others later
    skype.Profile('MOOD_TEXT', messages['skype'])
def setMessages(message):
    #for now lets just deal with skype, we'll add the others later
    skype.Profile('MOOD_TEXT', message)
user32 = ctypes.windll.User32
OpenDesktop = user32.OpenDesktopA
SwitchDesktop = user32.SwitchDesktop
DESKTOP_SWITCHDESKTOP = 0x0100
locked = False
try:
    while 1:
      hDesktop = OpenDesktop ("default", 0, False, DESKTOP_SWITCHDESKTOP)
      result = SwitchDesktop (hDesktop)
      if result:
        if locked:
            locked = False
            restoreMessages(messages)
      else:
        locked = True
        messages = {'skype':skype.Profile('MOOD_TEXT')}
        setMessages('AFK - Away From Keyboard')
        time.sleep(2)
except:
    pass



More information about the python-win32 mailing list