jshook 中文文档 下载 App

modmenu 悬浮窗菜单——ImGui 驱动的 Mod Menu 快速上手

最简单的例子

var menu = modmenu.create('我的 Mod Menu', [
    { type: 'text', val: 'Hello JsHook!' },
    { type: 'switch', title: '金币翻倍', val: true }
], {
    onchange: function (result) {
        console.log('[+] 状态变化: ' + JSON.stringify(result));
    }
});

就这样,一个完整的悬浮窗菜单就出来了。

支持的组件类型

type说明关键字段
text静态文字val(文字内容)、color(可选)
switch开关title、val(true/false)
select下拉选择title、item(选项数组)、val(选中索引)
slider滑动条title、val(当前值)、min、max
button按钮title
input输入框title、val(默认值)
checkbox复选框title、val
radio单选组title、item、val
category分类标题(不可交互)title
collapse可折叠区域title、item(子组件数组)、default(默认展开)
tab多标签页item(每个标签的内容)
image图片width、height、val(图片 URL 或 base64)

onchange 回调

任何组件状态变化都会触发 onchange:

onchange: function (result) {
    switch(result.id) {
        case 'gold-switch':
            console.log('[+] 金币开关: ' + result.val);
            break;
        case 'speed-slider':
            console.log('[+] 速度设为: ' + result.val);
            break;
    }
}

自定义组件 ID

给组件加 id 字段,方便在 onchange 里精确匹配:

{ type: 'switch', title: '金币翻倍', val: false, id: 'gold-switch' },
{ type: 'slider', title: '速度', val: 100, min: 1, max: 200, id: 'speed-slider' }

多标签页

var menu = modmenu.create('游戏辅助', [
    {
        type: 'tab',
        item: [
            {
                title: '金币',
                item: [
                    { type: 'switch', title: '金币翻倍', val: true, id: 'gold' },
                    { type: 'button', title: '立即加 99999', id: 'add-gold' }
                ]
            },
            {
                title: '战斗',
                item: [
                    { type: 'switch', title: '无敌模式', val: false, id: 'god' },
                    { type: 'slider', title: '攻击倍率', val: 100, min: 1, max: 500, id: 'atk' }
                ]
            }
        ],
        default: 0
    }
], { onchange: function (r) {} });

实例方法

方法说明
menu.close()关闭这个悬浮窗
menu.state()显示底部状态栏(ImGui 调试信息)
menu.size(w, h)改变窗口尺寸(像素)
menu.position(type, x, y)设置初始位置(type 1-9 对应 9 个预设位置)
menu.icon(img)设置窗口图标(base64 或 URL)
menu.edgeHiden(enable)拖到屏幕边缘自动隐藏图标
menu.update(id, value)动态更新某个组件的值

全局关闭

modmenu.closeAll();

关掉所有已创建的 Mod Menu。

增强渲染 vs 系统渲染

modmenu 底层用 ImGui 绘制。如果增强渲染开启,ImGui 直接走 GPU 绘制,悬浮窗体验更流畅且不能被系统录屏/截图捕获。如果增强渲染不可用(虚拟机/模拟器/部分机型),JsHook 会回退到 Android 系统渲染,性能略差且可被录屏捕获。

增强渲染相关问题排查见 增强渲染故障排查。