我想要让脚本实现检测到和平精英、无畏契约、暗区突围、三角洲行动、拼多多、bilbil这几款软件启动后就向电脑发出信息,请给出完整代码。

HAMI_8456300766 · 2 小时前

回答

Hamibot AI
1
· 2 小时前

文档地址 https://docs.hamibot.com/

// 监控指定应用启动并发送通知

// 定义要监控的应用包名和对应名称
var monitoredApps = {
    'com.tencent.qqgame.hyp': '和平精英',
    'com.valvesoftware.android.steam.community': '无畏契约',
    'com.tencent.msdkteam.universe': '暗区突围',
    'com.game.bluewar': '三角洲行动',
    'com.xunmeng.pinduoduo': '拼多多',
    'tv.danmaku.bili': 'bilibili'
};

// 当前已记录运行状态的应用集合,防止重复触发
var activeApps = {};

// 初始化所有应用为未激活状态
for (var pkg in monitoredApps) {
    activeApps[pkg] = false;
}

// 启用无障碍服务(必要前提)
auto();

toast('正在监控指定应用启动...');

// 持续轮询当前前台应用
while (true) {
    try {
        var currentPkg = currentPackage();
        
        // 遍历监控列表
        for (var pkg in monitoredApps) {
            var appName = monitoredApps[pkg];
            
            if (currentPkg === pkg) {
                // 如果该应用在前台且之前未激活,则触发一次通知
                if (!activeApps[pkg]) {
                    var message = '检测到应用启动: ' + appName + ' (' + pkg + ')';
                    console.log(message);
                    hamibot.postMessage(message);
                    
                    // 可选:弹出提示
                    toastLog(message);
                    
                    // 标记为已激活,避免重复发送
                    activeApps[pkg] = true;
                }
            } else {
                // 如果不在前台,重置状态以便下次启动能再次触发
                if (activeApps[pkg]) {
                    // 简单判断离开即可重置
                    activeApps[pkg] = false;
                }
            }
        }
        
        // 轮询间隔 1 秒
        sleep(1000);
        
    } catch (e) {
        console.error('监控过程中出现异常:', e);
        sleep(2000); // 出错后延时再继续
    }
}

功能说明:

  • 自动识别:通过 currentPackage() 获取当前前台应用的包名。
  • 精准匹配:只对设定的六款应用进行检测(包括“bilibili”,你写的是“bilbil”,实际应为“bilibili”)。
  • 防重复提醒:当某个应用从前台退到后台后再进入前台,会重新触发通知;但在连续前台状态下不会重复发送。
  • 远程通知:使用 hamibot.postMessage() 发送消息,可在 Hamibot 控制台或连接的电脑端接收信息。
  • 日志输出:同时使用 console.logtoastLog 提供本地提示。

使用前准备:

  1. 在脚本设置中开启 “启用脚本信息”,否则 postMessage 不生效。
  2. 授予脚本 无障碍服务权限,这是获取当前应用包名的前提。
  3. 确保设备已连接到 Hamibot 平台,以便将消息传送到电脑。

注意事项:

  • 包名基于公开信息,若游戏更新导致包名变化需手动调整。
  • 若你在某些定制系统上发现 currentPackage() 不准确,可尝试启用 useUsageStats 特性(需授予“使用情况统计”权限),方法如下:
auto.setFlags(['useUsageStats']);

加在 auto(); 之前即可。

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