Skip to content

控制方式说明

本文档详细说明 MaaFramework 中 Screencap(截图)和 Input(控制)的各种方式及其配置。

TIP

  • 对于 API ,screencap/input 使用 int 类型(按位或组合);对于 ProjectInterface V2,使用 string 类型(直接使用名称)。
  • ProjectInterface V2 仅支持配置 Win32 控制器的 screencap/mouse/keyboard 方式。Adb 控制器的 screencap/input 使用 MaaToolkitAdbDeviceFind 自动检测和选择最优方式,无需手动配置。

Adb

Adb Input

参考 MaaDef.h

将下面选择的方式 按位或 合并为一个值提供。MaaFramework 将会按照固定优先级顺序尝试所有提供的方式,选择首个可用方式。

默认尝试除 EmulatorExtras 外所有方式。

优先级: EmulatorExtras > Maatouch > MinitouchAndAdbKey > AdbShell

名称API 值速度兼容性说明
AdbShell1
MinitouchAndAdbKey2按键仍使用 AdbShell
Maatouch4
EmulatorExtras8仅支持模拟器:MuMu 12

Adb Screencap

参考 MaaDef.h

将下面选择的方式 按位或 合并为一个值提供。MaaFramework 将会尝试所有提供的方式,选择最快的可用方式。

默认尝试除 RawByNetcatMinicapDirectMinicapStream 外所有方式。

MinicapDirectMinicapStream 由于会编码为 jpg,为有损编码,将显著降低模板匹配的效果,不建议使用。

名称API 值速度兼容性编码说明
EncodeToFileAndPull1无损
Encode2无损
RawWithGzip4无损
RawByNetcat8无损
MinicapDirect16有损
MinicapStream32极快有损
EmulatorExtras64极快无损仅支持模拟器:MuMu 12、雷电 9

Win32

Win32 Input

参考 MaaDef.h

选择下面的值提供。

无默认值。Client 可以选择一个作为默认值。

Win32 下不同程序处理输入的方法不同,不存在一个通用方式。

名称API 值兼容性需管理员权限抢占鼠标支持后台说明
Seize1
SendMessage2可能
PostMessage4可能
LegacyEvent8
PostThreadMessage16可能
SendMessageWithCursorPos32可能短暂专为原神等检测实际鼠标位置的游戏设计
PostMessageWithCursorPos64可能短暂专为原神等检测实际鼠标位置的游戏设计

NOTE

  • 管理员权限主要取决于目标程序的权限级别,若目标程序为管理员权限,则需以管理员权限运行以保证兼容性。
  • WithCursorPos 系列方式会短暂移动光标到目标位置,发送完消息后会将光标移回原位置,因此会“短暂”抢占鼠标,但不会阻止用户操作。

Win32 Screencap

参考 MaaDef.h

选择下面的值提供。

无默认值。Client 可以选择一个作为默认值。

Win32 下不同程序处理绘制的方法不同,不存在一个通用方式。

名称API 值速度兼容性需管理员权限支持后台说明
GDI1
FramePool2极快Windows 10 1903+ 可用
DXGI_DesktopDup4极快桌面复制(全屏输出复制)
DXGI_DesktopDup_Window8极快桌面复制后裁剪
PrintWindow16
ScreenDC32

NOTE

Windows 在窗口最小化后会停止绘制该窗口内容,所有截图方式均无法获取有效内容,请避免窗口最小化。