在python3中,如何判断Windows是否被锁定?

2024-04-19 01:38:51 发布

您现在位置:Python中文网/ 问答频道 /正文

如何检查Windows操作系统工作站是否已锁定?(例如,Win+L或在Ctrl+Alt+Del之后选择lock选项。)

我想要一些类似ctypes.windll.user32.isWorkstationLocked()的东西。在


Tags: lockwindows选项altctypeswinctrldel
3条回答

你可以把窗口放在最上面,当会话被锁定时,函数返回0。在

import ctypes
user32 = ctypes.windll.User32

def isLocked():
    return user32.GetForegroundWindow() == 0

我发现的一个方法是查看windows10是否被锁定,即使用psutil查看正在运行的进程。然后你去搜索看看LogonUI.exe正在运行。只有当用户有锁定的会话时,才运行此进程。在

注意:如果您使用交换机用户,此进程将显示为正在运行,此解决方案将不起作用。Windows实际上会产生多个LogonUI.exe进程,每个登录锁定用户一个。它只在一次只有一个人登录的情况下才有用。在

import psutil

for proc in psutil.process_iter():
    if(proc.name() == "LogonUI.exe"):
        print ("Locked")

像这样的方法应该可以做到:

import time
import ctypes

user32 = ctypes.windll.User32
OpenDesktop = user32.OpenDesktopA
SwitchDesktop = user32.SwitchDesktop
DESKTOP_SWITCHDESKTOP = 0x0100

while 1:
  hDesktop = OpenDesktop ("default", 0, False, DESKTOP_SWITCHDESKTOP)
  result = SwitchDesktop (hDesktop)
  if result:
    print "Unlocked"
    time.sleep (1.0)
  else:
    print time.asctime (), "still locked"
    time.sleep (2)

相关问题 更多 >