怎样给脚本添加停止和退出按钮并且响应停止和退出事件

v9nprp8147 · 2 小时前

回答

Hamibot AI
1
· 2 小时前

你可以通过创建一个带有“停止”和“退出”按钮的悬浮窗,并结合 events.on('exit') 来实现对脚本停止和退出事件的响应。以下是完整的实现方法。


1. 创建悬浮窗按钮

使用 floaty.window() 创建包含“停止”和“退出”功能的悬浮窗:

// 文档地址 https://docs.hamibot.com/
var floatyWin = floaty.window(
    <vertical>
        <button id="stopBtn" text="停止任务" bg="#FF9800"/>
        <button id="exitBtn" text="退出脚本" bg="#F44336"/>
    </vertical>
);

// 停止任务(暂停执行逻辑,但不关闭脚本)
floatyWin.stopBtn.click(function () {
    toast('任务已停止');
    // 在这里添加你的停止逻辑,例如中断循环、清理资源等
    hamibot.stop(); // 停止当前脚本运行
});

// 退出脚本(完全终止脚本并关闭悬浮窗)
floatyWin.exitBtn.click(function () {
    toast('脚本即将退出');
    floatyWin.close();
    hamibot.exit(); // 完全退出脚本
});

2. 监听脚本退出事件

使用 events.on('exit') 可以在脚本被停止或退出时执行清理操作:

// 文档地址 https://docs.hamibot.com/
events.on('exit', function () {
    log('脚本正在退出,执行清理工作...');
    // 可以在这里关闭文件、保存状态、释放资源等
    // 注意:不要在此处添加死循环,否则会阻塞资源回收
});

⚠️ 提示:

  • hamibot.stop() 会触发 exit 事件,然后停止脚本运行。
  • hamibot.exit() 也会触发 exit 事件,随后彻底退出脚本并从任务列表中移除。

3. 保持悬浮窗运行

确保悬浮窗不会立即关闭,需添加一个空的定时器:

setInterval(function () {}, 1000);

完整示例代码

// 文档地址 https://docs.hamibot.com/
auto.waitFor();

// 悬浮窗 UI
var floatyWin = floaty.window(
    <vertical>
        <button id="stopBtn" text="停止任务" bg="#FF9800"/>
        <button id="exitBtn" text="退出脚本" bg="#F44336"/>
    </vertical>
);

// 处理停止按钮点击
floatyWin.stopBtn.click(function () {
    toast('任务已停止');
    hamibot.stop();
});

// 处理退出按钮点击
floatyWin.exitBtn.click(function () {
    toast('脚本退出');
    floatyWin.close();
    hamibot.exit();
});

// 监听脚本退出事件
events.on('exit', function () {
    log('脚本结束运行,正在清理资源...');
});

// 保持悬浮窗存活
setInterval(function () {}, 1000);

功能说明

操作 方法 行为描述
点击“停止” hamibot.stop() 触发 exit 事件,停止脚本运行,但仍保留在最近任务中
点击“退出” hamibot.exit() 触发 exit 事件,彻底退出脚本并关闭所有资源

这样你就可以安全地控制脚本的停止与退出,并在退出前完成必要的清理工作。

ℹ️ 本回答由 AI 生成,内容仅供参考