本帖最后由 wkdxz 于 2021-11-14 15:04 编辑
新人第一次发帖,此功能其实可以用bat命令实现,但最近在玩Python,所以用来Python来写。
实现效果:
手机不在局域网内,则结束微信进程,防止别人偷窥微信聊天记录
思路:
- 在路由里将IP与手机Mac绑定(让IP可以直接查询到手机在线情况)
- 使用 Ping 手机IP,检测手机是否在线
- 如手机在线,就退出检测
- 手机不在线,则说明人远离电脑,则结束微信进程。
后续问题:
直接结束微信进程,手机微信上还是显示微信在线。希望有高手帮我完善下代码,可以让微信可以正常退出。
[Python] 纯文本查看 复制代码 from os import system as run
from os import popen as echo
from time import sleep
from sys import exit
from arrow import now
def Wechat_onlie():
for i in echo('tasklist'):
if 'WeChat.exe' in i:
return True
return False
def Tel_onlie():
ip = '192.168.0.123' #手机对应的固定ip地址【在路由器内将手机MAC和IP地址绑定】
ls = [i.strip() for i in echo('ping /n 2 ' + ip) if len(i) > 1]
total = ''.join(ls)
if total.count('TTL=') > 0: #有 TTL= 字样 表示手机在局域网内
return True
return False
def Count_tel_offline(cishu): #每3秒钟检测一次,然后返回不在线次数
n = 0
for i in range(cishu):
print(f'第{i+1}次检测...')
if not Tel_onlie():
n += 1
sleep(0.5)
return n
if __name__ == '__main__':
thistime = now().format('YYYY-MM-DD HH:mm')
jc = 'WeChat.exe 进程'
if not Wechat_onlie():
print(f'无 {jc} ,直接退出')
exit()
else:
print(f'有 {jc}')
cishu = 5
jiance = Count_tel_offline(cishu)
if jiance > 0: #如果有一次不在线,就结束微信进程
t = f'{thistime}\t结束微信进程'
print(t)
for j in range(3):
for i in 'Wechat_Browser WeChatPlayer WeChat'.split():
run(f'taskkill /f /im {i}.exe') |