Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查Windows屏幕是否已锁定_Python_Windows - Fatal编程技术网

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字符API
OpenDesktopW
。它也没有设置
restype
argtypes
,因此很容易使Python崩溃。这不是在处理错误。把手漏了。它可能会作为副作用修改当前的输入桌面。它使用的是易受库间冲突影响的
ctypes.windell
,而不是
ctypes.windell
,因此也没有使用
use\u last\u error=True
来保护线程的最后一个错误值。谢谢,使用OpenDesktopW使其工作起来。依赖于安全桌面行为的技术,例如下面的技术,在Windows 10中是不可靠的。当工作站被锁定时,例如通过
锁定工作站
,它不会立即设置为安全桌面。您必须单击以切换到安全桌面(我不知道为什么),系统会提示您输入凭据。最好直接查询终端服务API以检查会话是否被锁定——Windows 7及更高版本支持这种查询。