吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2177|回复: 17
收起左侧

[其他原创] Directory Opus 13.6 可用的apk文件右键菜单脚本

[复制链接]
longforus 发表于 2024-6-7 19:00
本帖最后由 longforus 于 2024-6-11 10:28 编辑

Directory Opus 13.6 可用的apk文件右键菜单脚本:

// apk文件的右键经过adb安装的脚本,可以在多个设备中选择

function OnClick(clickData) {
    try {

        // 检查是否选中了文件
        if (clickData.func.sourcetab.selected_files.count == 0) {
            DOpus.Output("没有选中任何文件");
            return;
        }
        // 获取选中的文件名
        var selectedFile = clickData.func.sourcetab.selected_files(0).realpath;
        DOpus.Output("选中的文件: " + selectedFile);
        // 创建 WScript.Shell 对象
        var WshShell = new ActiveXObject("WScript.Shell");
        // 调试输出,确认 WshShell 对象是否创建成功
        DOpus.Output("WshShell 对象创建成功");

        // 使用完整路径或确保 adb 在环境变量路径中
        var adbPath = "adb"; // 如果 adb 在环境变量中
        var adbExec = WshShell.Exec(adbPath + " devices -l");
        // 调试输出,确认命令是否成功执行
        DOpus.Output("adb 命令已执行");

        // 等待命令执行完成
        while (adbExec.Status == 0) {
            DOpus.Output("等待 adb 命令完成...");
            DOpus.Delay(500);
        }

        // 输出命令的退出代码
        DOpus.Output("adb 命令退出代码: " + adbExec.ExitCode);
        // 输出命令的标准输出
        var output = adbExec.StdOut.ReadAll();
        DOpus.Output("adb 命令输出: " + output);
        // 输出命令的错误输出
        var errorOutput = adbExec.StdErr.ReadAll();
        if (errorOutput) {
            DOpus.Output("adb 命令错误输出: " + errorOutput);
        }

        // 解析 adb 命令的输出,提取设备信息
        var deviceList = [];
        var lines = output.split('\n');
        for (var i = 1; i < lines.length; i++) {
            var line = lines[i];
            if (line) {
                var parts = line.split(/\s+/);
                if (parts.length > 2) {
                    var deviceId = parts[0];
                    var model = "";
                    for (var j = 0; j < parts.length; j++) {
                        if (parts[j].indexOf("model:") === 0) {
                            model = parts[j].split(':')[1];
                            break;
                        }
                    }
                    DOpus.Output("deviceId "+deviceId+" model  "+model);
                    deviceList.push({id: deviceId, model: model});
                }
            }
        }
        // 如果没有设备,输出提示信息
        if (deviceList.length === 0) {
            DOpus.Output("没有检测到设备"+deviceList);
            return;
        }

        // 创建选择对话框
        var dlg = clickData.func.dlg;
        dlg.title = "选择设备";
        dlg.message = "请选择一个设备进行安装:";
        var buttons = "";
       for (var k = 0; k < deviceList.length; k++) {
            if (buttons.length > 0) {
                buttons += "|";
            }
            buttons += deviceList[k].model;
        }
        buttons+="|Cancel";
        DOpus.Output("buttons = "+buttons);
        dlg.buttons = buttons;
        dlg.Show();

         var selectedIndex = dlg.result;
         DOpus.Output("selectedIndex = "+selectedIndex);
        if (selectedIndex < 1) {
            DOpus.Output("用户未选择任何设备");
            return;
        }
        // 根据选择的索引获取设备ID
        var deviceId = deviceList[selectedIndex-1].id;
        // 执行 adb install 命令
        var apkPath = selectedFile; // 使用选中的 APK 文件路径
        var installCmd = adbPath + " -s " + deviceId + " install " + apkPath;
        DOpus.Output("执行命令: " + installCmd);
        var installExec = WshShell.Exec(installCmd);
        // 等待安装命令完成
        while (installExec.Status == 0) {
            DOpus.Output("等待 adb install 命令完成...");
            DOpus.Delay(500);
        }

        // 输出安装命令的退出代码
        DOpus.Output("adb install 命令退出代码: " + installExec.ExitCode);
         // 输出安装命令的标准输出
        var installOutput = installExec.StdOut.ReadAll();
        DOpus.Output("adb install 命令输出: " + installOutput);
        // 输出安装命令的错误输出
        var installErrorOutput = installExec.StdErr.ReadAll();
        if (installErrorOutput) {
            DOpus.Output("adb install 命令错误输出: " + installErrorOutput);
        }
    } catch (e) {
        // 捕获并输出错误信息
        DOpus.Output("发生错误: " + e.message);
    }
}

2024年6月11日, AM 10:28:05 重新修改了一下,添加取消按钮, 修复单设备下可能出现的错误

安装方法

  1. Directory Opus 13.6 设置->文件类型:

  2. 搜索apk

    image-20240607184629074.png

  3. 选择新建

    image-20240607184812069.png

使用

image-20240607184915018.png

image-20240607185006278.png

选择对应的设备就可以了,存在的问题是会弹出命令行的黑框.但是比输序号还是要方便,优雅一些

免费评分

参与人数 3吾爱币 +9 热心值 +3 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
wgz001 + 1 + 1 谢谢@Thanks!
jy138290 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| longforus 发表于 2024-6-7 19:03
另外有双击选择安装的版本   https://www.52pojie.cn/thread-1549989-1-1.html
lisoloist 发表于 2024-6-11 10:37
这个软件有很多定制化的东东啊,可惜基本不会,目前都是用的原始默认的!
发现一个小问题,若窗口用满了右键无粘贴选项,请问如何再在此已满窗口目录下粘贴新文件呢
lxyi 发表于 2024-6-7 20:47
wakin20 发表于 2024-6-7 22:17
膜拜大佬,謝謝分享!
wait4wuai 发表于 2024-6-7 22:45
但是,windows又不支持。
woainizmb 发表于 2024-6-7 23:22
66666666666666666
 楼主| longforus 发表于 2024-6-11 10:29
wait4wuai 发表于 2024-6-7 22:45
但是,windows又不支持。

这个软件就是win平台的,支持
leestef 发表于 2024-6-11 15:05

学习大佬方法了
iamlimeng 发表于 2024-6-12 14:20
国内为DO写代码真是太少了,可能使用DO的群体本来就小。虽然用不上,但必须支持!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 12:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表