Directory Opus 13.6 可用的apk文件右键菜单脚本
本帖最后由 longforus 于 2024-6-11 10:28 编辑Directory Opus 13.6 可用的apk文件右键菜单脚本:
```js
// 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;
if (line) {
var parts = line.split(/\s+/);
if (parts.length > 2) {
var deviceId = parts;
var model = "";
for (var j = 0; j < parts.length; j++) {
if (parts.indexOf("model:") === 0) {
model = parts.split(':');
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.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.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
3. 选择新建
### 使用
选择对应的设备就可以了,存在的问题是会弹出命令行的黑框.但是比输序号还是要方便,优雅一些 另外有双击选择安装的版本 https://www.52pojie.cn/thread-1549989-1-1.html 这个软件有很多定制化的东东啊,可惜基本不会,目前都是用的原始默认的!
发现一个小问题,若窗口用满了右键无粘贴选项,请问如何再在此已满窗口目录下粘贴新文件呢 学习大佬方法了 膜拜大佬,謝謝分享!
但是,windows又不支持。 66666666666666666 wait4wuai 发表于 2024-6-7 22:45
但是,windows又不支持。
这个软件就是win平台的,支持
学习大佬方法了 国内为DO写代码真是太少了,可能使用DO的群体本来就小。虽然用不上,但必须支持!
页:
[1]
2