今天小編給大家分享一下python怎么實現微信釘釘等軟件多開分身的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
目前很多軟件都限制單實例,大多數軟件都是用Mutex來實現的 而這個東西咱們可以用handle去干掉它,并且不影響使用。 釘釘也是一樣的步驟 不過Mutex的名字不一樣 我測試的釘釘的是:
”\Sessions\1\BaseNamedObjects\{{239B7D43-86D5-4E5C-ADE6-CEC42155B475}}DingTalk“
這里要借助微軟的兩個軟件 分別是: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)以上就是“python怎么實現微信釘釘等軟件多開分身”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。