屏幕连点器, 自动连点器,手机自动点击器【autojs】

简介: 提供四种点击模式:单点、长按、滑动和随机区域点击

下载地址(文章指定相关附件):https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:7858
提供四种点击模式:单点、长按、滑动和随机区域点击
支持自定义点击间隔、点击次数、点击位置等参数
包含坐标录制功能,可直观获取屏幕点击位置
实时状态显示,清晰展示运行进度
线程安全设计,可随时停止运行
支持百分比坐标和绝对坐标两种输入方式
界面布局清晰,操作简单直观
完整的错误处理和参数验证机制

"ui";
ui.layout(

    <horizontal gravity="center">
        <text text="点击模式:" textSize="16" marginRight="8"/>
        <spinner id="mode" entries="单点|长按|滑动|随机区域" marginRight="16"/>
        <text text="间隔(ms):" textSize="16" marginRight="8"/>
        <input id="interval" inputType="number" text="500" marginRight="16"/>
    </horizontal>

    <horizontal gravity="center" marginTop="16">
        <text text="点击次数:" textSize="16" marginRight="8"/>
        <input id="count" inputType="number" text="100" marginRight="16"/>
        <text text="点击位置:" textSize="16" marginRight="8"/>
        <input id="position" text="50%,50%" hint="格式:x,y 或 x%,y%"/>
    </horizontal>

    <horizontal gravity="center" marginTop="16">
        <text text="长按时长(ms):" textSize="16" marginRight="8"/>
        <input id="pressDuration" inputType="number" text="300" marginRight="16"/>
        <text text="滑动距离:" textSize="16" marginRight="8"/>
        <input id="swipeDistance" inputType="number" text="100" marginRight="16"/>
    </horizontal>

    <horizontal gravity="center" marginTop="16">
        <text text="随机范围:" textSize="16" marginRight="8"/>
        <input id="randomRange" inputType="number" text="50" marginRight="16"/>
        <text text="点击延迟(ms):" textSize="16" marginRight="8"/>
        <input id="delay" inputType="number" text="0"/>
    </horizontal>

    <button id="start" text="开始执行" textColor="#FFFFFF" bg="#4CAF50" marginTop="24"/>
    <button id="stop" text="停止执行" textColor="#FFFFFF" bg="#F44336" marginTop="8"/>
    <button id="record" text="录制坐标" textColor="#FFFFFF" bg="#2196F3" marginTop="8"/>

    <text id="status" text="状态: 等待开始" textSize="14" textColor="#9E9E9E" marginTop="16"/>
</vertical>

);

let running = false;
let clickThread = null;

// 解析坐标输入
function parsePosition(input) {
if (input.includes("%")) {
let [x, y] = input.split(",");
x = parseInt(x) / 100 device.width;
y = parseInt(y) / 100
device.height;
return [x, y];
} else {
return input.split(",").map(Number);
}
}

// 单点点击
function singleClick(x, y) {
press(x, y, 50);
}

// 长按点击
function longPress(x, y, duration) {
press(x, y, duration);
}

// 滑动操作
function swipeAction(x, y, distance) {
swipe(x, y, x + distance, y + distance, 500);
}

// 随机区域点击
function randomClick(x, y, range) {
const randX = x + (Math.random() range 2 - range);
const randY = y + (Math.random() range 2 - range);
press(randX, randY, 50);
}

// 主点击循环
function clickLoop() {
const mode = ui.mode.getSelectedItem();
const interval = parseInt(ui.interval.text());
const count = parseInt(ui.count.text());
const [x, y] = parsePosition(ui.position.text());
const pressDuration = parseInt(ui.pressDuration.text());
const swipeDistance = parseInt(ui.swipeDistance.text());
const randomRange = parseInt(ui.randomRange.text());
const delay = parseInt(ui.delay.text());

sleep(delay);

for (let i = 0; i < count && running; i++) {
    switch (mode) {
        case "单点":
            singleClick(x, y);
            break;
        case "长按":
            longPress(x, y, pressDuration);
            break;
        case "滑动":
            swipeAction(x, y, swipeDistance);
            break;
        case "随机区域":
            randomClick(x, y, randomRange);
            break;
    }

    ui.status.setText("状态: 运行中 (" + (i + 1) + "/" + count + ")");
    if (i < count - 1) sleep(interval);
}

running = false;
ui.status.setText("状态: 已完成");

}

// 开始按钮事件
ui.start.click(() => {
if (running) return;
running = true;
ui.status.setText("状态: 启动中...");
clickThread = threads.start(clickLoop);
});

// 停止按钮事件
ui.stop.click(() => {
running = false;
if (clickThread) clickThread.interrupt();
ui.status.setText("状态: 已停止");
});

// 录制坐标按钮事件
ui.record.click(() => {
toast("请在3秒内点击屏幕录制坐标");
threads.start(function() {
const pos = captureScreen().then(function(img) {
const point = images.findColor(img, "#FF0000", {
region: [0, 0, device.width, device.height],
threshold: 10
});
if (point) {
const xPercent = Math.round(point.x / device.width 100);
const yPercent = Math.round(point.y / device.height
100);
ui.position.setText(xPercent + "%," + yPercent + "%");
toast("坐标已记录: " + xPercent + "%," + yPercent + "%");
} else {
toast("未检测到点击位置");
}
});
});
});

// 初始化状态
ui.status.setText("状态: 准备就绪");

相关文章
|
3月前
|
安全 数据安全/隐私保护
屏幕自动点击器, 手机自动点击器, 自动连点器屏幕【autojs】
完整UI界面:包含悬浮窗控制面板,支持拖动位置调整 核心功能:单点/连续点击、位置记录、任务执行与停止
AutoJs曲线滑动---贝塞尔曲线
AutoJs曲线滑动---贝塞尔曲线
447 0
AutoJs Pro 7.0.4-1 实战教程 ---火热持续更新中
AutoJs Pro 7.0.4-1 实战教程 ---火热持续更新中
654 0
|
自然语言处理 安全 搜索推荐
强大的工具:IP归属地查询API
强大的工具: IP归属地查询API
2178 1
抖音直播间抢红包脚本,自动抢福袋插件,会采集直播间自动检测
这是一款深度定制的抖音抢红包插件源码,可大幅提升抢红包效率。通过自动化脚本,实现24小时不间断寻找直播间并抢红包功能。
|
3月前
|
编解码 自然语言处理 算法
球球大作战脚本,赛马娘脚本,天龙小蜜脚本源码分享
智能避障系统采用向量场算法计算逃生路径 多线程颜色识别优化处理性能
|
3月前
|
JSON 数据可视化 数据安全/隐私保护
屏幕自动点击器, 屏幕连点器,手机自动点击器【autojs】
提供三种点击模式:固定坐标点击、随机区域点击和录制回放功能
|
4月前
|
缓存 NoSQL Java
【📕分布式锁通关指南 11】源码剖析redisson之读写锁的实现
Redisson 的 `RedissonReadWriteLock` 提供了高效的分布式读写锁实现,适用于读多写少的场景。通过 Redis 与 Lua 脚本结合,确保读锁并行、写锁互斥,以及读写之间的互斥,保障了分布式环境下的数据一致性。它支持可重入、自动过期和锁释放机制,提升了系统并发性能与资源控制能力。
109 0
|
安全 Linux Shell
Linux服务器 /etc/pam.d目录下的文件都是什么作用?
【8月更文挑战第2天】Linux服务器 /etc/pam.d目录下的文件都是什么作用?
1736 2
|
Kubernetes API 容器
在K8S中,Service的Nodeport端口范围?
在K8S中,Service的Nodeport端口范围?