我想要我创造个脚本,可以自动截图发微信

HAMI_2096542158 · 1 天前

回答

Hamibot AI
1
· 1 天前

实现自动截图并发送微信的功能,需要脚本具备屏幕截图权限和无障碍服务权限。由于微信界面会随版本更新变化,发送图片的 UI 自动化部分可能需要根据实际情况调整。

以下是一个基础脚本示例,实现了截图、保存图片、打开微信并进入“文件传输助手”聊天窗口的功能。发送图片的具体点击操作因微信版本差异较大,建议在脚本中根据实际界面元素补充。

脚本代码

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

// 1. 请求屏幕截图权限
if (!requestScreenCapture()) {
    toastLog("没有授予 Hamibot 屏幕截图权限");
    hamibot.exit();
}

// 2. 等待一下确保权限生效
sleep(1000);

// 3. 截取屏幕
var img = captureScreen();
if (!img) {
    toastLog("截图失败");
    hamibot.exit();
}

// 4. 保存图片到本地
var savePath = "/sdcard/hamibot/auto_share.png";
// 确保目录存在,部分设备可能需要手动创建 hamibot 文件夹
images.save(img, savePath);
toastLog("截图已保存:" + savePath);

// 5. 打开微信
app.launchApp("微信");
sleep(2000);

// 6. 进入文件传输助手 (示例目标)
// 如果微信版本更新导致找不到,需要修改选择器,例如使用 className 或 desc
var contact = text("文件传输助手").findOne(5000);
if (contact) {
    contact.click();
    sleep(1000);
    toastLog("已进入聊天窗口");
    
    // 7. 发送图片逻辑 (需根据实际界面调整)
    // 以下仅为逻辑示意,微信界面复杂,建议录制动作或手动调试选择器
    // 示例:点击加号 -> 点击相册 -> 选择图片 -> 点击发送
    // var plusBtn = className("android.widget.ImageView").desc("更多").findOne();
    // if (plusBtn) { plusBtn.click(); sleep(500); }
    // var albumBtn = text("相册").findOne();
    // if (albumBtn) { albumBtn.click(); sleep(1000); }
    // ... 后续选择图片和发送操作
    
    toastLog("请补充发送图片的 UI 自动化代码");
} else {
    toastLog("未找到文件传输助手,请检查微信列表");
}

// 释放图片资源
img.recycle();

关键步骤说明

  1. 权限请求requestScreenCapture() 用于申请截图权限,首次运行需要在手机弹窗中点击“允许”。
  2. 截图与保存captureScreen() 获取屏幕图像对象,images.save() 将其保存为本地文件。发送微信通常需要先保存文件再到相册选择。
  3. 无障碍服务auto.waitFor() 确保无障碍服务已开启,这是操作微信界面的前提。
  4. UI 选择器text("文件传输助手") 是查找聊天对象的示例。如果微信改版,可能需要使用 classNamedescfindImage 来定位元素。

最佳实践建议

  • 稳定性优化:微信界面元素经常变化,建议在使用 click() 前加 sleep() 等待界面加载,或使用 waitFor() 等待元素出现。
  • 兼容性:脚本使用的是 Rhino 1.7.15 引擎,避免使用箭头函数 => 或默认参数。
  • 发送逻辑:完全自动化发送图片涉及多级菜单(加号 - 相册 - 选择 - 发送),建议使用 Hamibot 的录制功能辅助生成这部分代码,或通过找图方式定位“发送”按钮。
  • 隐私安全:脚本保存的图片位于本地存储,注意定期清理或使用后删除,避免隐私泄露。

如果在运行过程中遇到界面找不到元素的问题,可以使用 Hamibot 的“布局分析”工具查看当前微信界面的元素属性,然后更新脚本中的选择器。

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