我发现坛友分享的很多都是通过cmd 去start 多个微信 虽然能实现多开,但不够灵活,比如我上午登录了一个微信,下午在登录就不太好用了 当然也可能是我start的姿势不对。于是我就搜了下单实例原理,自己动手实现了个随用随开的。目前很多软件都限制单实例,大多数软件都是用Mutex来实现的 而这个东西咱们可以用handle去干掉它,并且不影响使用。 钉钉也是一样的步骤 不过Mutex的名字不一样 我测试的钉钉的是:
”\Sessions\1\BaseNamedObjects{{239B7D43-86D5-4E5C-ADE6-CEC42155B475}}DingTalk“
干货主要有:
- ① 200 多本 Python 电子书(和经典的书籍)应该有
- ② Python标准库资料(最全中文版)
- ③ 项目源码(四五十个有趣且可靠的练手项目及源码)
- ④ Python基础入门、爬虫、网络开发、大数据分析方面的视频(适合小白学习)
- ⑤ Python学习路线图(告别不入流的学习)
上述这份完整版的Python全套学习资料已经上传CSDN官方,如果需要可以微信扫描下方CSDN官方认证二维码 即可领取
👉[[CSDN大礼包:《python兼职资源&全套学习资料》免费分享]](安全链接,放心点击)
- 这里要借助微软的两个软件 分别是:procexp handle 接下来开始正文: 首先咱们要手动判断下Mutex是哪个。 这就要用到procexp.exe了 以管理员身份运行该程序。 选中微信进程 按Ctrl+L 就会出现图中下半部分。
在软件中我们可以找type 是Mutant 的 然后右键有个关闭 一个一个试 这里我已经试过了就不演示了 直接给大家
name \Sessions\1\BaseNamedObjects\WeChat_GlobalConfig_Multi_Process_Mutex
到这一步之后 这个工具的使命就完成了!接下来该使用handle了 在cmd 输入下面的代码
handle -a -u -p 12668 "\Sessions\1\BaseNamedObjects\WeChat_GlobalConfig_Multi_Process_Mutex"
然后我们在去关闭下这个句柄就可以了
handle -p 12668 -c 460 -y
注意:这句代码需要管理员权限 然后我们再去打开微信就可以了。 下面我们用python去实现下 代码可能和分析不太一样 因为
“\Sessions\1\BaseNamedObjects\WeChat_GlobalConfig_Multi_Process_Mutex”
中的1 有时候会变成其他数字,所以我用了匹配规则 把代码和handle.exe 放在一个目录下
import os
import re
import psutil
def get_pid(name):
"""
获取所有的微信进程
"""
process_list = psutil.pids()
pids = []
for pid in process_list:
if psutil.Process(pid).name() == name:
pids.append(pid)
return pids
def more_open(path):
pids = get_pid("WeChat.exe")
for pid in pids:
#遍历所有微信的pid 把 Mutex都干掉
cmd = f"handle -a -u -p {pid}"
with os.popen(cmd) as f:
result = f.read()
search_result = ""
for i in result.split("\n"):
if i.strip():
if i.strip().endswith("_WeChat_App_Instance_Identity_Mutex_Name"):
search_result += i
if not search_result:
os.startfile(path)
continue
re_result = re.findall('(\d+): Mutant', search_result, re.S)
#上面这个循环是匹配 Mutex的handle
if re_result:
for _id in re_result:
os.system(f'handle -p {pid} -c {_id} -y')
os.startfile(path)
path = "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe"
more_open(path)