首页 > 编程知识 正文

微信双开版双开,微信双开

时间:2023-05-06 19:32:01 阅读:283289 作者:4528

今天需要在电脑上双开电脑版微信,但其正常只能打开一个客户端实例(双击两次后只打开一个登录界面),估计是微信登录程序加互斥导致,网上有方法是通过命令行执行 start WeChat.exe&WeChat.exe实现的,推测这样双开是因为第二个实例打开速度快于第一个实例创建互斥速度。

遂用Cpp + WinSDK 代码实现如下:

// DualWeChat.cpp : 定义应用程序的入口点。// Author : SigmaTera#include "framework.h"#include "DualWeChat.h"#include <shellapi.h>#include <ShlObj_core.h>#include <atlstr.h>/*Utils.hpp*/BOOL IsX64System(){SYSTEM_INFO si;GetNativeSystemInfo(&si);if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64)return TRUE;elsereturn FALSE;};BOOL GetInstPath(CString& strInstPath){CRegKey key;CString strPath;CString strValue;if (IsX64System() == TRUE)strPath.Format(TEXT("SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\WeChat"));elsestrPath.Format(TEXT("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WeChat"));if (key.Open(HKEY_LOCAL_MACHINE, strPath, KEY_ALL_ACCESS) == ERROR_SUCCESS){ULONG ulSize = MAX_PATH;key.QueryStringValue(TEXT("InstallLocation"), strValue.GetBuffer(ulSize), &ulSize);strValue.ReleaseBuffer();strInstPath = strValue;key.Close();return TRUE;}return FALSE;}/*End of Utils.hpp*/int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow){ UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: 在此处放置代码。CString strInstPath;if (GetInstPath(strInstPath) == TRUE){strInstPath = TEXT("");SHGetSpecialFolderPath(NULL, strInstPath.GetBuffer(MAX_PATH), CSIDL_PROGRAM_FILES, FALSE);strInstPath.ReleaseBuffer();strInstPath += TEXT("\Tencent\WeChat");}strInstPath += TEXT("\Wechat.exe");ShellExecute(NULL, NULL, strInstPath, NULL, NULL,SW_SHOW);ShellExecute(NULL, NULL, strInstPath, NULL, NULL, SW_SHOW); return 0;}

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。