Iva*_*eev 6 python windows python-3.x
如何检查 Windows 操作系统工作站是否被锁定?(例如 Win+L 或在 Ctrl+Alt+Del 之后选择锁定选项。)
我想要类似的东西ctypes.windll.user32.isWorkstationLocked()。
这段代码今天在四台不同的 Windows 7 和 10 机器上对我有用,尝试类似的东西:
import ctypes
import time
user32 = ctypes.windll.User32
time.sleep(5)
#
#print(user32.GetForegroundWindow())
#
if (user32.GetForegroundWindow() % 10 == 0): print('Locked')
# 10553666 - return code for unlocked workstation1
# 0 - return code for locked workstation1
#
# 132782 - return code for unlocked workstation2
# 67370 - return code for locked workstation2
#
# 3216806 - return code for unlocked workstation3
# 1901390 - return code for locked workstation3
#
# 197944 - return code for unlocked workstation4
# 0 - return code for locked workstation4
#
else: print('Unlocked')
Run Code Online (Sandbox Code Playgroud)
编辑:另外,这个今天有效:
import subprocess
import time
time.sleep(5)
process_name='LogonUI.exe'
callall='TASKLIST'
outputall=subprocess.check_output(callall)
outputstringall=str(outputall)
if process_name in outputstringall:
print("Locked.")
else:
print("Unlocked.")
Run Code Online (Sandbox Code Playgroud)
小智 6
我发现查看 Windows 10 是否被锁定的一个技巧是使用 来查看正在运行的进程psutil。然后您搜索以查看是否LogonUI.exe正在运行。此过程仅在用户锁定会话时运行。
注意:如果您使用“切换用户”,此进程将显示为正在运行,并且此解决方法将不起作用。Windows 实际上会产生多个LogonUI.exe进程,每个登录的锁定用户都有一个进程。仅当一次只有一个人登录时它才有用。
import psutil
for proc in psutil.process_iter():
if(proc.name() == "LogonUI.exe"):
print ("Locked")
Run Code Online (Sandbox Code Playgroud)
你可以得到最上面的窗口,当会话被锁定时,函数返回0。
import ctypes
user32 = ctypes.windll.User32
def isLocked():
return user32.GetForegroundWindow() == 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5232 次 |
| 最近记录: |