因为大部分时间都在电脑前工作,所以很少看手机刷微信,好在有微信电脑版,不过只能上一个号,这样就没法工作号和生活号都挂电脑上了,如果能双开就好了。
(图源 :pixabay)
互斥锁(Mutex)
有很多程序都能打开两个实例的,比如火狐、IE、以及Chrome啥的都行,为啥微信就不行呢?我想起我之前写过的几个小程序,为了防止用户不小心打开多份程序,我都在启动代码中加了一个互斥锁(Mutex)。
所谓互斥锁,就是不能同时存在两个,当存在一个时,再创建相同的Mutex就会出错。我程序中的代码如下:
请注意,以上代码仅仅为说明这个东西,请忽略我的渣代码。
微信的互斥锁
微信禁止双开的机制也差不多,是用互斥锁(Mutex)来实现的,CSDN上有大神详细分析了这个事情,有兴趣的自己去看。
逆向工程我是不懂的,所以就不瞎分析了,不过结论可以大致说一下:
- 微信使用互斥锁禁止多开
- 微信使用的函数是CreateMutexW(其实就是宽字节版)
- 微信的互斥锁名为:_WeChat_App_Instance_Identity_Mutex_Name
那么双开的思路是只要改掉前一个实例的互斥锁名或者用新的互斥锁名就可以啦。
双开的方法
知道了上述原理,就能在电脑上双开微信嘛?用一个词来形容:然并卵。
因为我整不明白咋去改啊,况且也不放心在电脑上用什么内存修改工具之类的。那有没有什么简便的方法呢?
答案就是创建一个bat文件,包含如下内容:
其中后边的字符串是微信程序的路径,不知道的话,可以在桌面快捷方式上右键查找:
想开几个,就弄几行好了。
为什么
你可能会问,为啥微信弄了互斥锁,还能多开?
其实我也不知道,不过我猜是因为微信互斥锁实现的太复杂,需要一段时间初始化,而在这一小段时间里,如果你操作的足够快,就可以多开了。
不过我在我自己的程序上用相同的方法测试,发现我的程序没法多开。不研究啦,总之,实现了我的目的就好啦,以后可以在电脑上愉快地畅聊啦。
附代码:
start "" "C:\Program Files (x86)\Tencent\WeChat\WeChat.exe"
start "" "C:\Program Files (x86)\Tencent\WeChat\WeChat.exe"
start "" "C:\Program Files (x86)\Tencent\WeChat\WeChat.exe"
相关链接
Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh
and click VOTE
Vote @oflyhigh via Steemconnect
Thank you!
This page is synchronized from the post: ‘电脑上的微信双开/多开’