Feature: MCP 远程控制(remote_open/close/keyboard/mouse/clipboard) #4
@@ -1726,11 +1726,15 @@ bool IsExtendedKey(WPARAM vKey)
|
|||||||
|
|
||||||
VOID CScreenManager::ProcessCommand(LPBYTE szBuffer, ULONG ulLength)
|
VOID CScreenManager::ProcessCommand(LPBYTE szBuffer, ULONG ulLength)
|
||||||
{
|
{
|
||||||
|
// 记录大小判定:现代控制端(本服务端)统一发 48 字节 MSG64;28 字节 MSG32 仅为兼容
|
||||||
|
// 老 32 位控制端。二者长度的最小公倍数是 336(=7×48=12×28),批量注入(如 MCP 远程
|
||||||
|
// 控制的 type/拖拽)时若先判 %28,会把 7 的整数倍条 MSG64 误判成 MSG32,字段错位导致
|
||||||
|
// 输入错乱甚至吞掉按键;故先判 %48,仅当不整除 48 才回落到 28。
|
||||||
int msgSize = sizeof(MSG64);
|
int msgSize = sizeof(MSG64);
|
||||||
if (ulLength % 28 == 0) // 32位控制端发过来的消息
|
if (ulLength % 48 == 0) // 64位控制端(现代服务端)发过来的消息
|
||||||
msgSize = 28;
|
|
||||||
else if (ulLength % 48 == 0) // 64位控制端发过来的消息
|
|
||||||
msgSize = 48;
|
msgSize = 48;
|
||||||
|
else if (ulLength % 28 == 0) // 32位控制端发过来的消息(兼容)
|
||||||
|
msgSize = 28;
|
||||||
else return; // 数据包不合法
|
else return; // 数据包不合法
|
||||||
|
|
||||||
// 命令个数
|
// 命令个数
|
||||||
|
|||||||
Reference in New Issue
Block a user