Python 检查Windows屏幕是否已锁定
有没有办法自动检查当前用户是否锁定了电脑?(通常由Python 检查Windows屏幕是否已锁定,python,windows,Python,Windows,有没有办法自动检查当前用户是否锁定了电脑?(通常由Win+L激活)。我看到的一种黑客方法是以某种方式捕获所有组合键,但问题是如何知道用户已返回 也许有一些标志可以通过python或windows终端访问 编辑:我尝试了以下代码: 它检测屏幕何时被锁定,但不检测何时被解锁,它会继续无限期地写入“屏幕仍被锁定”。那么问题出在哪里呢?我有Python3.4,64位Win7 EDIT2:实际上,结果对我来说总是0,即使没有任何锁定,所以实际上它没有检测到任何东西 import ctypes user3
Win+L
激活)。我看到的一种黑客方法是以某种方式捕获所有组合键,但问题是如何知道用户已返回
也许有一些标志可以通过python或windows终端访问
编辑:我尝试了以下代码:
它检测屏幕何时被锁定,但不检测何时被解锁,它会继续无限期地写入“屏幕仍被锁定”。那么问题出在哪里呢?我有Python3.4,64位Win7
EDIT2:实际上,结果
对我来说总是0
,即使没有任何锁定,所以实际上它没有检测到任何东西
import ctypes
user32 = ctypes.windll.User32
OpenDesktop = user32.OpenDesktopA
SwitchDesktop = user32.SwitchDesktop
DESKTOP_SWITCHDESKTOP = 0x0100
hDesktop = OpenDesktop ("default", 0, False, DESKTOP_SWITCHDESKTOP)
result = SwitchDesktop (hDesktop)
print(result)
打开组件管理,打开远程控制台,输入计算机名称 一旦连接到远程控制台,请检查安全日志
注意:您可以将基础计算机设置为接收您选择的日志文件,使您能够自动查看用户何时登录/关闭/锁定/解锁可能与我尝试的重复,但它只能部分工作。此代码在Python 3中不起作用,因为您正在将unicode传递给(除已弃用外,肯定要避免)[a]NSI API
OpenDesktopA
而不是[W]ide字符APIOpenDesktopW
。它也没有设置restype
和argtypes
,因此很容易使Python崩溃。这不是在处理错误。把手漏了。它可能会作为副作用修改当前的输入桌面。它使用的是易受库间冲突影响的ctypes.windell
,而不是ctypes.windell
,因此也没有使用use\u last\u error=True
来保护线程的最后一个错误值。谢谢,使用OpenDesktopW使其工作起来。依赖于安全桌面行为的技术,例如下面的技术,在Windows 10中是不可靠的。当工作站被锁定时,例如通过锁定工作站
,它不会立即设置为安全桌面。您必须单击以切换到安全桌面(我不知道为什么),系统会提示您输入凭据。最好直接查询终端服务API以检查会话是否被锁定——Windows 7及更高版本支持这种查询。