2024-04-19 01:38:51 发布
网友
如何检查Windows操作系统工作站是否已锁定?(例如,Win+L或在Ctrl+Alt+Del之后选择lock选项。)
我想要一些类似ctypes.windll.user32.isWorkstationLocked()的东西。在
ctypes.windll.user32.isWorkstationLocked()
你可以把窗口放在最上面,当会话被锁定时,函数返回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)
你可以把窗口放在最上面,当会话被锁定时,函数返回0。在
我发现的一个方法是查看windows10是否被锁定,即使用psutil查看正在运行的进程。然后你去搜索看看LogonUI.exe正在运行。只有当用户有锁定的会话时,才运行此进程。在
注意:如果您使用交换机用户,此进程将显示为正在运行,此解决方案将不起作用。Windows实际上会产生多个LogonUI.exe进程,每个登录锁定用户一个。它只在一次只有一个人登录的情况下才有用。在
像这样的方法应该可以做到:
相关问题 更多 >
编程相关推荐