Matt Herbert wrote: > > Hello all, > > I'm having a little problem figuring how I can tell if there is anybody > currently logged into windows at the desktop. More specifically, I am > initiating a logoff via the ExitWindowsEx() function and, as we all > know, it can sometimes take a little bit for the logoff to actually > complete (my system takes anywhere from 3 to 20 seconds). > > The problem is ExitWindowsEx() return's immediately. But I don't want to > do anything until the logoff process has completed and we are sitting > happily at the logon screen. > > So just to give a little perspective on this, I have a service that runs > all the time, for automated testing. The service need's to perform some > test's at the desktop, and other tests at the logon screen. I need to be > sure, that after I've logged a user off, that the logoff process has > completed, and we are indeed at the logon screen. > > I have tried using: > > deskh = win32service.GetThreadDesktop(win32api.GetCurrentThreadId()) > name = > win32service.GetUserObjectInformation(deskh,win32service.UOI_NAME)
This will return information for the desktop on which the service is running, which is usually not the interactive desktop. Both are named Default, but exist in different window stations. In fact, on Vista services run in an entirely separate session from the interactive session, and interacting with it is restricted. > but that always returns "Default", even after the user has logged out. > I'm not really sure where to go next. > > Do any of you very smart people have any good idea's on how I can solve > this problem? > > -Matt You may be able to use win32ts.WTSEnumerateSessions to check if the console session is currently active. Roger _______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32