案例故事: 即时通讯(IM)软件有很多,比如企业微信,钉钉,飞书,Skype, 微软的Lync等,
这些软件现在都很牛,还能监控谁谁在不在电脑旁工作,谁谁谁提前下班溜了。。。
一次偶然的机会,有个妹子请教我,她每天都想准时18点下班,
她问我如何做到: 假装企业微信在线,并在2个小时后(20点)准时关机,
这样她就能成功欺骗老板,假装自己一直在努力加班.....
准备阶段
- 其实企业微信的是否在线,取决于是否你的电脑是否键盘或鼠标事件持续进行。
- 经过测试,模拟键盘事假即可,用keyboard 模块,需要pip install keyboard安装
- 建议用scroll lock这个按键,因为这个按键单独点击,一般不会影响系统其它的程序运行, 除了打开的Excel表滚动会受影响!
- Windows系统的立马关机命令是:shutdown /s /t 0
Python批处理脚本形式
记住批处理脚本的精髓:批量顺序执行语句
import os
import time
import keyboard
TIMEOUT = 7200 # 2小时(7200s)常量
once_time = time.time() # 获取当前时间戳,并保存到一个变量
# 循环获取当前时间,与once_time变量做时间戳做减法
while time.time() - once_time <= TIMEOUT:
print("Pressed the scroll lock key")
keyboard.press_and_release("scroll lock") # 按下“scroll lock" 键
time.sleep(5) # 每5秒间隔一次
os.system("shutdown /s /t 0") # 立马关机
Python面向过程函数形式
这么简单的程序,用批处理脚本形式即可
如果非要搞成函数形式,培养培养编程思维,也未尝不可!
import os
import time
import keyboard
def input_keyevent(key, timeout):
once_time = time.time() # 获取当前时间戳,并保存到一个变量
# 循环获取当前时间,与once_time变量做时间戳做减法
while time.time() - once_time <= timeout:
print("Pressed the %s key" % key)
keyboard.press_and_release(key) # 按下某个键
time.sleep(5) # 每5秒间隔一次
def shutdown_now():
os.system("shutdown /s /t 0") # 立马关机
# 第一步,执行2个小时的按键事件
input_keyevent("scroll lock", 7200)
# 第二步, 立马关机
shutdown_now()
Python面向对象类形式
这么简单的程序,用批处理脚本形式即可
如果非要搞成类形式,培养培养编程思维,也未尝不可!
import os
import time
import keyboard
class KeyEventInputter(object):
def __init__(self, key):
self.key = key
self.once_time = time.time() # 临时取一次时间
def input_keyevnet(self, timeout):
# 循环获取当前时间,与once_time变量做时间戳做减法
while time.time() - self.once_time <= timeout:
print("Pressed the %s key" % self.key)
keyboard.press_and_release(self.key) # 按下某个键
time.sleep(5) # 每5秒间隔一次
if __name__ == '__main__':
# 第一步,新建一个键盘事件输入器的对象,执行2个小时的按键事件
k_obj = KeyEventInputter("scroll lock")
k_obj.input_keyevnet(7200)
# 第二步,执行2个小时的按键事件
os.system("shutdown /s /t 0") # 立马关机
运行方式
以上代码可以直接运行,比如保存为keep_active.py并放在桌面,
建议python keep_active.py运行,当然也可以双击运行。
小提示:import keyboard
print(keyboard.read_key()) # 可以获取到键的具体名称,比如我按下ScrLK按键,则打印:scroll lock
keyboard.press("scroll lock") 函数和 keyboard.press_and_release("scroll lock")函数是不同的。
前者是一直按住某个键,后者是按一次然后放开,所以本案例用后者函数。
小提示: 我自知这种行为是不对的,我只是站在通过Python技术来实现解决日常工作碰到的问题的角度,才写的这篇文章,
我其实更提倡更有正能量的东西, 这种行为,不能忍, 因为我也是一个老板!!!
更多更好的原创文章,请访问官方网站:www.zipython.com
自拍教程(自动化测试Python教程,武散人编著)
原文链接:https://www.zipython.com/#/detail?id=503fb4feb1b74859b6cfdcb5408cef95
也可关注“武散人”微信订阅号,随时接受文章推送。