回答
你可以通过创建一个带有“停止”和“退出”按钮的悬浮窗,并结合 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 生成,内容仅供参考