├── README.md └── WxMoreInstance ├── InjectDll ├── InjectDll.cpp ├── InjectDll.h ├── InjectDll.vcproj ├── InjectDll.vcproj.ZAB6J204CW8Q939.fish.user ├── InjectDll.vcxproj ├── InjectDll.vcxproj.filters ├── ProcessHandleHelper.h ├── ProcesshandlerHelper.cpp ├── ReadMe.txt ├── dllmain.cpp ├── stdafx.cpp ├── stdafx.h └── targetver.h ├── Release ├── InjectDll.dll └── WxMoreInstance.exe ├── WxMoreInstance.sln ├── WxMoreInstance.suo ├── WxMoreInstance.v11.suo ├── WxMoreInstance ├── MessageHandleUI.cpp ├── MessageHandleUI.h ├── ReadMe.txt ├── WeChatProcessInfo.cpp ├── WeChatProcessInfo.h ├── WechatTab.cpp ├── WechatTab.h ├── WechatTabUIData.cpp ├── WechatTabUIData.h ├── WxMoreInstance.aps ├── WxMoreInstance.cpp ├── WxMoreInstance.h ├── WxMoreInstance.rc ├── WxMoreInstance.vcproj ├── WxMoreInstance.vcxproj ├── WxMoreInstance.vcxproj.filters ├── WxMoreInstanceDlg.cpp ├── WxMoreInstanceDlg.h ├── res │ ├── WxMoreInstance.ico │ └── WxMoreInstance.rc2 ├── resource.h ├── stdafx.cpp ├── stdafx.h └── targetver.h └── 文档 └── 微信tab逻辑.txt /README.md: -------------------------------------------------------------------------------- 1 | # PC- 2 | PC微信多开源代码 3 | 4 | 修改hook判断条件,来兼容最新版本问题,如果不能多开,可以在博客留言 5 | 6 | 增加tab 功能,方便操作微信,后续有时间再增加功能 7 | 8 | 2021/4/12 9 | 10 | 1:修复内存导致不能多开问题 11 | 12 | 2:增加winodws高版本的API,兼容性更高【借鉴微软handle】 13 | 14 | 博客地址 15 | [博客文章地址](http://www.xiaoyutang.net/toptic/%e5%be%ae%e4%bf%a1/pc%e5%be%ae%e4%bf%a1%e5%a4%9a%e5%bc%80%e6%9c%80%e6%96%b0%e4%bb%a3%e7%a0%81%e3%80%90%e5%85%bc%e5%ae%b9%e6%80%a7%e9%9d%9e%e5%b8%b8%e9%ab%98%e3%80%91/) 16 | -------------------------------------------------------------------------------- /WxMoreInstance/InjectDll/InjectDll.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/InjectDll/InjectDll.cpp -------------------------------------------------------------------------------- /WxMoreInstance/InjectDll/InjectDll.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/InjectDll/InjectDll.h -------------------------------------------------------------------------------- /WxMoreInstance/InjectDll/InjectDll.vcproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/InjectDll/InjectDll.vcproj -------------------------------------------------------------------------------- /WxMoreInstance/InjectDll/InjectDll.vcproj.ZAB6J204CW8Q939.fish.user: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | 35 | 36 | 39 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /WxMoreInstance/InjectDll/InjectDll.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | 14 | {2AB2BEF0-B185-4381-AE5E-1BD03C7B3A5D} 15 | InjectDll 16 | Win32Proj 17 | 18 | 19 | 20 | DynamicLibrary 21 | v110 22 | Unicode 23 | true 24 | 25 | 26 | DynamicLibrary 27 | v110 28 | Unicode 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | <_ProjectFileVersion>11.0.61030.0 42 | 43 | 44 | $(SolutionDir)$(Configuration)\ 45 | $(Configuration)\ 46 | true 47 | 48 | 49 | $(SolutionDir)$(Configuration)\ 50 | $(Configuration)\ 51 | false 52 | 53 | 54 | 55 | Disabled 56 | WIN32;_DEBUG;_WINDOWS;_USRDLL;INJECTDLL_EXPORTS;%(PreprocessorDefinitions) 57 | true 58 | EnableFastChecks 59 | MultiThreadedDebugDLL 60 | Use 61 | Level3 62 | EditAndContinue 63 | 64 | 65 | true 66 | Windows 67 | MachineX86 68 | 69 | 70 | 71 | 72 | MaxSpeed 73 | true 74 | WIN32;NDEBUG;_WINDOWS;_USRDLL;INJECTDLL_EXPORTS;%(PreprocessorDefinitions) 75 | MultiThreadedDLL 76 | true 77 | Use 78 | Level3 79 | ProgramDatabase 80 | 81 | 82 | true 83 | Windows 84 | true 85 | true 86 | MachineX86 87 | 88 | 89 | 90 | 91 | 92 | 93 | false 94 | 95 | 96 | false 97 | 98 | 99 | 100 | Create 101 | Create 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /WxMoreInstance/InjectDll/InjectDll.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav 15 | 16 | 17 | {b86798e5-1100-4bef-b071-77d4141b5cf1} 18 | 19 | 20 | 21 | 22 | 源文件 23 | 24 | 25 | 源文件 26 | 27 | 28 | 源文件 29 | 30 | 31 | 获取进程句柄 32 | 33 | 34 | 35 | 36 | 头文件 37 | 38 | 39 | 头文件 40 | 41 | 42 | 头文件 43 | 44 | 45 | 获取进程句柄 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /WxMoreInstance/InjectDll/ProcessHandleHelper.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/InjectDll/ProcessHandleHelper.h -------------------------------------------------------------------------------- /WxMoreInstance/InjectDll/ProcesshandlerHelper.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/InjectDll/ProcesshandlerHelper.cpp -------------------------------------------------------------------------------- /WxMoreInstance/InjectDll/ReadMe.txt: -------------------------------------------------------------------------------- 1 | ======================================================================== 2 | 动态链接库:InjectDll 项目概述 3 | ======================================================================== 4 | 5 | 应用程序向导已为您创建了此 InjectDll DLL。 6 | 7 | 本文件概要介绍组成 InjectDll 应用程序的 8 | 的每个文件的内容。 9 | 10 | 11 | InjectDll.vcproj 12 | 这是使用应用程序向导生成的 VC++ 项目的主项目文件, 13 | 其中包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。 14 | 15 | InjectDll.cpp 16 | 这是主 DLL 源文件。 17 | 18 | ///////////////////////////////////////////////////////////////////////////// 19 | 其他标准文件: 20 | 21 | StdAfx.h, StdAfx.cpp 22 | 这些文件用于生成名为 InjectDll.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。 23 | 24 | ///////////////////////////////////////////////////////////////////////////// 25 | 其他注释: 26 | 27 | 应用程序向导使用“TODO:”注释来指示应添加或自定义的源代码部分。 28 | 29 | ///////////////////////////////////////////////////////////////////////////// -------------------------------------------------------------------------------- /WxMoreInstance/InjectDll/dllmain.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/InjectDll/dllmain.cpp -------------------------------------------------------------------------------- /WxMoreInstance/InjectDll/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/InjectDll/stdafx.cpp -------------------------------------------------------------------------------- /WxMoreInstance/InjectDll/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/InjectDll/stdafx.h -------------------------------------------------------------------------------- /WxMoreInstance/InjectDll/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/InjectDll/targetver.h -------------------------------------------------------------------------------- /WxMoreInstance/Release/InjectDll.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/Release/InjectDll.dll -------------------------------------------------------------------------------- /WxMoreInstance/Release/WxMoreInstance.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/Release/WxMoreInstance.exe -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WxMoreInstance", "WxMoreInstance\WxMoreInstance.vcxproj", "{C3DE2CF4-F23C-413A-AA20-8EED0FF773BD}" 5 | ProjectSection(ProjectDependencies) = postProject 6 | {2AB2BEF0-B185-4381-AE5E-1BD03C7B3A5D} = {2AB2BEF0-B185-4381-AE5E-1BD03C7B3A5D} 7 | EndProjectSection 8 | EndProject 9 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InjectDll", "InjectDll\InjectDll.vcxproj", "{2AB2BEF0-B185-4381-AE5E-1BD03C7B3A5D}" 10 | EndProject 11 | Global 12 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 13 | Debug|Win32 = Debug|Win32 14 | Release|Win32 = Release|Win32 15 | EndGlobalSection 16 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 17 | {C3DE2CF4-F23C-413A-AA20-8EED0FF773BD}.Debug|Win32.ActiveCfg = Debug|Win32 18 | {C3DE2CF4-F23C-413A-AA20-8EED0FF773BD}.Debug|Win32.Build.0 = Debug|Win32 19 | {C3DE2CF4-F23C-413A-AA20-8EED0FF773BD}.Release|Win32.ActiveCfg = Release|Win32 20 | {C3DE2CF4-F23C-413A-AA20-8EED0FF773BD}.Release|Win32.Build.0 = Release|Win32 21 | {2AB2BEF0-B185-4381-AE5E-1BD03C7B3A5D}.Debug|Win32.ActiveCfg = Debug|Win32 22 | {2AB2BEF0-B185-4381-AE5E-1BD03C7B3A5D}.Debug|Win32.Build.0 = Debug|Win32 23 | {2AB2BEF0-B185-4381-AE5E-1BD03C7B3A5D}.Release|Win32.ActiveCfg = Release|Win32 24 | {2AB2BEF0-B185-4381-AE5E-1BD03C7B3A5D}.Release|Win32.Build.0 = Release|Win32 25 | EndGlobalSection 26 | GlobalSection(SolutionProperties) = preSolution 27 | HideSolutionNode = FALSE 28 | EndGlobalSection 29 | EndGlobal 30 | -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance.suo -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance.v11.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance.v11.suo -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/MessageHandleUI.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/MessageHandleUI.cpp -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/MessageHandleUI.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/MessageHandleUI.h -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/ReadMe.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/ReadMe.txt -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WeChatProcessInfo.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "WeChatProcessInfo.h" 3 | 4 | 5 | WeChatProcessInfo::WeChatProcessInfo(void) 6 | { 7 | } 8 | 9 | 10 | WeChatProcessInfo::~WeChatProcessInfo(void) 11 | { 12 | } 13 | -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WeChatProcessInfo.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | class WeChatProcessInfo 5 | { 6 | public: 7 | WeChatProcessInfo(void); 8 | ~WeChatProcessInfo(void); 9 | 10 | public: 11 | HWND WechatHwnd; 12 | std::wstring RawName; 13 | std::wstring MarkName; 14 | int ProcessID; 15 | CButton* PButton; 16 | }; 17 | 18 | -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WechatTab.cpp: -------------------------------------------------------------------------------- 1 | // WechatTab.cpp : 实现文件 2 | // 3 | 4 | #include "stdafx.h" 5 | #include "WxMoreInstance.h" 6 | #include "WechatTab.h" 7 | #include "afxdialogex.h" 8 | 9 | 10 | // WechatTab 对话框 11 | IMPLEMENT_DYNAMIC(WechatTab, CDialogEx) 12 | 13 | WechatTab::WechatTab(CWnd* pParent /*=NULL*/) 14 | : CDialogEx(WechatTab::IDD, pParent) 15 | { 16 | m_last_tab_width = 100; 17 | } 18 | 19 | WechatTab::~WechatTab() 20 | { 21 | } 22 | 23 | void WechatTab::DoDataExchange(CDataExchange* pDX) 24 | { 25 | CDialogEx::DoDataExchange(pDX); 26 | } 27 | 28 | LRESULT WechatTab::OnWeChatHWNDMessage(WPARAM wParam, LPARAM lParam) 29 | { 30 | HWND hw = (HWND)lParam; 31 | if(!IsCotain(hw)){ 32 | CString str; 33 | int index = m_tab_button_list.size() + 1; 34 | str.Format(L"微信%d", index); 35 | AddItemUI(str, hw); 36 | } 37 | return 0; 38 | } 39 | 40 | //遍历所有微信窗口,是否微信窗口已经关闭了,如果关闭就关掉tab 41 | //这里逻辑可以扩展 42 | LRESULT WechatTab::OnWeChatHWNDCloseMessage(WPARAM wParam, LPARAM lParam) 43 | { 44 | OutputDebugString(L"收到微信关闭窗口消息\r\n"); 45 | HWND hw = (HWND)wParam; 46 | RemoveItemUI(hw); 47 | return 0; 48 | } 49 | 50 | void WechatTab::OnAutoTabButtonClick() 51 | { 52 | HWND hw = FindWechatFromTab(); 53 | ::SetForegroundWindow(hw); 54 | ::ShowWindow(hw, SW_SHOW); 55 | //MessageBox(L"hello world"); 56 | } 57 | 58 | //判断当前增加一个tab会不会显示完整,如果能显示完整那么当前宽度就是默认值 59 | //如果不能显示,那么就重新计算当前的宽度 60 | int WechatTab::CalcTabWidth() 61 | { 62 | int width = 100; 63 | int new_size = m_tab_button_list.size() + 1; 64 | int start_x = 0; 65 | int total_widht = 0; 66 | int gap = 2; 67 | total_widht = start_x + new_size * width + (new_size - 1) * gap; 68 | 69 | //获取UI显示宽度 70 | CRect parent_rect; 71 | this->GetWindowRect(&parent_rect); 72 | if(total_widht > parent_rect.Width()){ 73 | width = parent_rect.Width() / new_size - gap; 74 | //TRACE(L"w:%d p:%d \n", width, parent_rect.Width()); 75 | } 76 | return width; 77 | } 78 | 79 | CRect WechatTab::CalcTabRect(int index) 80 | { 81 | CRect parent_rect; 82 | this->GetWindowRect(&parent_rect); 83 | 84 | int gap = 2; //间隔10px 85 | int start_x = 0; 86 | int start_y = 1; 87 | int width = CalcTabWidth(); 88 | int height = parent_rect.Height() - 1 - 50; 89 | int size = m_tab_button_list.size(); 90 | int last_index = size - 1; 91 | int current_index = index; 92 | 93 | int new_x = start_x + current_index*gap + current_index* width; 94 | return CRect(new_x, start_y, new_x + width, start_y + height); 95 | } 96 | 97 | 98 | 99 | CRect WechatTab::CalcNewTabRect() 100 | { 101 | int size = m_tab_button_list.size(); 102 | int last_index = size - 1; 103 | int current_index = last_index + 1; 104 | return CalcTabRect(current_index); 105 | } 106 | 107 | CButton* WechatTab::CreateTabItem(CString name) 108 | { 109 | CButton* p = new CButton(); 110 | CRect parent_rect; 111 | this->GetWindowRect(&parent_rect); 112 | CRect rect = CalcNewTabRect(); 113 | 114 | //TRACE(L"parent:%d x: %d y:%d width:%d heidht:%d\n", parent_rect.Width(), rect.left, rect.top , rect.Width(), rect.Height()); 115 | p->Create(name, 0 , rect, this, IDC_BUTTON_AUTO_TAB); 116 | //赋值,同时需要重新刷新界面 117 | if(rect.Width() != m_last_tab_width){ 118 | m_last_tab_width = rect.Width(); 119 | //需要重新刷新界面 120 | RefreshTabUI(); 121 | } 122 | 123 | return p; 124 | } 125 | 126 | void WechatTab::RefreshTabUI() 127 | { 128 | CString str; 129 | for(unsigned int i = 0 ; i < m_tab_button_list.size(); i++){ 130 | CRect rect = CalcTabRect(i); 131 | m_tab_button_list[i].PButton->MoveWindow(rect); 132 | str.Format(L"微信%d", i + 1); 133 | m_tab_button_list[i].PButton->SetWindowTextW(str); 134 | } 135 | } 136 | 137 | bool WechatTab::IsCotain(HWND hw) 138 | { 139 | bool is_find = false; 140 | for(unsigned int i = 0 ; i < m_tab_button_list.size(); i++){ 141 | //TRACE("LIST raw_wechat:%d hw:%d \r\n", m_tab_button_list[i].WechatHwnd, hw); 142 | 143 | WCHAR text[256] = {0}; 144 | GetClassName(hw,text, 256); 145 | //OutputDebugString(text); 146 | if(m_tab_button_list[i].WechatHwnd == hw){ 147 | is_find = true; 148 | } 149 | } 150 | return is_find; 151 | } 152 | 153 | HWND WechatTab::FindWechatFromTab() 154 | { 155 | CPoint pt; 156 | GetCursorPos(&pt); 157 | ScreenToClient(&pt); 158 | //TRACE("鼠标位置rect: %d %d\r\n", pt.x, pt.y); 159 | 160 | for(unsigned int i = 0 ; i < m_tab_button_list.size(); i++){ 161 | CRect rect; 162 | m_tab_button_list[i].PButton->GetWindowRect(&rect); 163 | ScreenToClient(&rect); 164 | if(pt.x >= rect.left && pt.x <= rect.right && pt.y >= rect.top && pt.y <= rect.bottom){ 165 | return m_tab_button_list[i].WechatHwnd; 166 | } 167 | } 168 | return 0; 169 | } 170 | 171 | std::vector WechatTab::CheckWechatIsBad() 172 | { 173 | std::vector info_list; 174 | for(std::vector::iterator it = m_tab_button_list.begin(); it !=m_tab_button_list.end(); it++){ 175 | if(!::IsWindow(it->WechatHwnd)){ 176 | info_list.push_back(*it); 177 | } 178 | } 179 | return info_list; 180 | } 181 | 182 | BEGIN_MESSAGE_MAP(WechatTab, CDialogEx) 183 | ON_MESSAGE(WM_MAIN_WECHAT_HWND_MSG,OnWeChatHWNDMessage) 184 | ON_MESSAGE(WM_MAIN_WECHAT_HWND_CLOSE_MSG,OnWeChatHWNDCloseMessage) 185 | ON_BN_CLICKED(IDC_BUTTON_AUTO_TAB, OnAutoTabButtonClick) 186 | //ON_MESSAGE(WM_BUTT) 187 | END_MESSAGE_MAP() 188 | 189 | 190 | // WechatTab 消息处理程序 191 | bool WechatTab::AddItemUI(CString name, HWND hw_chat) 192 | { 193 | CButton* p = CreateTabItem(name); 194 | WeChatProcessInfo info; 195 | info.PButton = p; 196 | info.WechatHwnd = hw_chat; 197 | 198 | m_tab_button_list.push_back(info); 199 | p->ShowWindow(SW_SHOW); 200 | return false; 201 | } 202 | 203 | //按钮删除销毁 204 | //同时需要重新排列按钮 205 | void WechatTab::RemoveItemUI(HWND hw_chat) 206 | { 207 | for(std::vector::iterator it = m_tab_button_list.begin(); it !=m_tab_button_list.end(); it++){ 208 | if(it->WechatHwnd == hw_chat){ 209 | it->PButton->ShowWindow(SW_HIDE); 210 | it->PButton->CloseWindow(); 211 | it->PButton->DestroyWindow(); 212 | delete it->PButton; //释放,防止内存泄漏 213 | m_tab_button_list.erase(it); 214 | break; 215 | } 216 | } 217 | 218 | RefreshTabUI(); 219 | } 220 | -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WechatTab.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/WechatTab.h -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WechatTabUIData.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "WechatTabUIData.h" 3 | 4 | 5 | WechatTabUIData::WechatTabUIData(void) 6 | { 7 | 8 | } 9 | 10 | 11 | WechatTabUIData::~WechatTabUIData(void) 12 | { 13 | } 14 | 15 | void WechatTabUIData::Init(HWND hw) 16 | { 17 | m_UIHwnd = hw; 18 | } 19 | 20 | 21 | void WechatTabUIData::AddItem(std::wstring name) 22 | { 23 | } -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WechatTabUIData.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/WechatTabUIData.h -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WxMoreInstance.aps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/WxMoreInstance.aps -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WxMoreInstance.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/WxMoreInstance.cpp -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WxMoreInstance.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/WxMoreInstance.h -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WxMoreInstance.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/WxMoreInstance.rc -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WxMoreInstance.vcproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/WxMoreInstance.vcproj -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WxMoreInstance.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | 14 | {C3DE2CF4-F23C-413A-AA20-8EED0FF773BD} 15 | WxMoreInstance 16 | MFCProj 17 | 18 | 19 | 20 | Application 21 | v110 22 | Static 23 | Unicode 24 | true 25 | 26 | 27 | Application 28 | v110 29 | Static 30 | Unicode 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | <_ProjectFileVersion>11.0.61030.0 44 | 45 | 46 | $(SolutionDir)$(Configuration)\ 47 | $(Configuration)\ 48 | true 49 | 50 | 51 | $(SolutionDir)$(Configuration)\ 52 | $(Configuration)\ 53 | false 54 | 55 | 56 | 57 | _DEBUG;%(PreprocessorDefinitions) 58 | false 59 | true 60 | 61 | 62 | Disabled 63 | WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) 64 | true 65 | EnableFastChecks 66 | MultiThreadedDebug 67 | Use 68 | Level3 69 | EditAndContinue 70 | 71 | 72 | _DEBUG;%(PreprocessorDefinitions) 73 | 0x0804 74 | $(IntDir);%(AdditionalIncludeDirectories) 75 | 76 | 77 | ../Debug/InjectDll.lib;%(AdditionalDependencies) 78 | true 79 | Windows 80 | MachineX86 81 | 82 | 83 | 84 | 85 | NDEBUG;%(PreprocessorDefinitions) 86 | false 87 | true 88 | 89 | 90 | MaxSpeed 91 | true 92 | WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) 93 | false 94 | MultiThreaded 95 | true 96 | Use 97 | Level3 98 | ProgramDatabase 99 | 100 | 101 | NDEBUG;%(PreprocessorDefinitions) 102 | 0x0804 103 | $(IntDir);%(AdditionalIncludeDirectories) 104 | 105 | 106 | ../Release/InjectDll.lib;%(AdditionalDependencies) 107 | true 108 | Windows 109 | true 110 | true 111 | MachineX86 112 | 113 | 114 | 115 | 116 | 117 | Create 118 | Create 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WxMoreInstance.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav 15 | 16 | 17 | {18c3a0f5-27d4-43b2-bc7d-494d9703ff4a} 18 | 19 | 20 | {cc21451e-3a81-48cf-bd57-c1908752928b} 21 | 22 | 23 | {8e507eec-a8f1-42f1-8081-844016cffaaf} 24 | 25 | 26 | {2f567cce-bf73-4da9-aa4d-1645409f522d} 27 | 28 | 29 | 30 | 31 | 源文件 32 | 33 | 34 | 源文件 35 | 36 | 37 | 源文件 38 | 39 | 40 | 界面\Tab 41 | 42 | 43 | 界面\Tab 44 | 45 | 46 | 交互消息 47 | 48 | 49 | 数据 50 | 51 | 52 | 53 | 54 | 头文件 55 | 56 | 57 | 头文件 58 | 59 | 60 | 头文件 61 | 62 | 63 | 头文件 64 | 65 | 66 | 头文件 67 | 68 | 69 | 界面\Tab 70 | 71 | 72 | 界面\Tab 73 | 74 | 75 | 交互消息 76 | 77 | 78 | 数据 79 | 80 | 81 | 82 | 83 | 资源文件 84 | 85 | 86 | 87 | 88 | 资源文件 89 | 90 | 91 | 92 | 93 | 资源文件 94 | 95 | 96 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WxMoreInstanceDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/WxMoreInstanceDlg.cpp -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/WxMoreInstanceDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/WxMoreInstanceDlg.h -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/res/WxMoreInstance.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/res/WxMoreInstance.ico -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/res/WxMoreInstance.rc2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/res/WxMoreInstance.rc2 -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/resource.h -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/stdafx.cpp -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/stdafx.h -------------------------------------------------------------------------------- /WxMoreInstance/WxMoreInstance/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/WxMoreInstance/targetver.h -------------------------------------------------------------------------------- /WxMoreInstance/文档/微信tab逻辑.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xvsdf100/PCWeChatMore/7682a41863d6a0f1365baad47aec78fcd8218dab/WxMoreInstance/文档/微信tab逻辑.txt --------------------------------------------------------------------------------