12345下一页
返回列表 发新帖

autojs脚本

  [复制链接]

13

主题

691

回帖

2537

积分

大学生

Rank: 5Rank: 5

金币
890
好评
5
信誉
101
发表于 2026-2-21 17:11:29 来自手机  | 显示全部楼层 | 阅读模式  来自 浙江
本帖最后由 樱落 于 2026-2-21 18:44 编辑

给大家写了一个autojs自动粘贴并发送的脚本,可以自动找到输入框并且自动粘贴,用处非常大,自选探索。

使用方法:需要先在粘贴内容里面加上需要粘贴的内容,然后选择第几个输入框
  1. "auto";
  2. // ========== 最终极速版 ==========

  3. // ========== 用户设置 ==========
  4. var LOGIN_X=980          // 发送按钮X坐标
  5. var LOGIN_Y=2120         // 发送按钮Y坐标
  6. var TPS=1000              // 每秒执行次数(大文件要降速)
  7. var THREADS=20            // 线程数量(大文件要降线程)
  8. var AUTO_SEND=false       // true=自动点击发送 false=只粘贴
  9. var SEND_DELAY=1          // 点击前的延迟(毫秒)
  10. var TARGET_INDEX=0        // 第几个输入框(0是第一个)
  11. var LOOP_MODE=false       // true=循环模式 false=单次模式
  12. var FLOAT_X=450          // 悬浮窗X坐标
  13. var FLOAT_Y=900          // 悬浮窗Y坐标

  14. // ========== 文件路径 ==========
  15. var SRC_FILE="/sdcard/js脚本/粘贴内容.txt"   // 要粘贴的内容
  16. var USED_FILE="/sdcard/js脚本/已粘贴.txt"    // 已粘贴的记录

  17. // ========== 全局变量 ==========
  18. var isRunning=false         // 运行状态
  19. var workers=[]              // 线程池
  20. var lock=threads.lock()     // 进度锁
  21. var et=null                 // 输入框缓存
  22. var saveQueue=[]            // 待保存队列
  23. var saveLock=threads.lock() // 队列锁
  24. var fileReader=null         // 文件读取器
  25. var currentSeq=0            // 当前序号

  26. // ========== 获取输入框(只找一次) ==========
  27. function getEditText(){
  28.     if(!et){
  29.         var n=className("EditText").find()
  30.         if(n.length>TARGET_INDEX) et=n[TARGET_INDEX]
  31.     }
  32.     return et
  33. }

  34. // ========== 初始化文件读取 ==========
  35. function initFileReader(){
  36.     files.write(USED_FILE, "")  // 清空已粘贴记录
  37.     fileReader = open(SRC_FILE, "r")  // 打开文件流
  38.     currentSeq = 0
  39. }

  40. // ========== 读取下一行 ==========
  41. function readNextLine(){
  42.     if(!fileReader) return null
  43.     var line = fileReader.readline()
  44.     if(line === null){  // 文件读完
  45.         if(LOOP_MODE){
  46.             fileReader.close()
  47.             fileReader = open(SRC_FILE, "r")  // 重新打开
  48.             currentSeq = 0
  49.             return readNextLine()
  50.         }
  51.         return null
  52.     }
  53.     line = line.trim()
  54.     if(line == "") return readNextLine()  // 跳过空行
  55.     var result = {seq:currentSeq, value:line}
  56.     currentSeq++
  57.     return result
  58. }

  59. // ========== 保存线程(保证文件顺序) ==========
  60. function saverJob(){
  61.     var lastSeq=-1          // 上次保存的序号
  62.     var buffer=[]           // 批量写入缓冲区
  63.    
  64.     while(isRunning || saveQueue.length>0){
  65.         saveLock.lock()
  66.         if(saveQueue.length>0){
  67.             saveQueue.sort(function(a,b){ return a.seq - b.seq })  // 按序号排序
  68.             while(saveQueue.length>0 && saveQueue[0].seq == lastSeq+1){
  69.                 buffer.push(saveQueue.shift().value)  // 取出连续的数据
  70.                 lastSeq++
  71.             }
  72.         }
  73.         saveLock.unlock()
  74.         
  75.         if(buffer.length>0){
  76.             files.append(USED_FILE, buffer.join("\n")+"\n")  // 批量写入
  77.             buffer=[]
  78.         }
  79.     }
  80.    
  81.     // 关闭文件
  82.     if(fileReader) fileReader.close()
  83. }

  84. // ========== 工作线程(只管粘贴) ==========
  85. function workerJob(){
  86.     var period=1000/TPS      // 每次粘贴的间隔时间
  87.     var et=getEditText()
  88.     if(!et) return
  89.    
  90.     while(isRunning){
  91.         var itemData
  92.         lock.lock()
  93.         itemData = readNextLine()
  94.         lock.unlock()
  95.         
  96.         if(!itemData){
  97.             if(!LOOP_MODE) break
  98.             continue
  99.         }
  100.         
  101.         et.setText(itemData.value)                // 粘贴到屏幕
  102.         if(AUTO_SEND){ click(LOGIN_X, LOGIN_Y) }  // 自动点击发送
  103.         
  104.         saveLock.lock()
  105.         saveQueue.push({seq:itemData.seq, value:itemData.value})  // 交给保存线程
  106.         saveLock.unlock()
  107.         
  108.         if(period>0) sleep(period)                // 控制速度
  109.     }
  110. }

  111. // ========== 悬浮窗 ==========
  112. var w=floaty.window(
  113.     <frame id="main" bg="#8800FF00" w="60" h="60" radius="30">
  114.         <text id="txt" text="贴" textSize="16" textColor="#000000" gravity="center"/>
  115.     </frame>
  116. )
  117. w.setPosition(FLOAT_X, FLOAT_Y)

  118. var lastX=0,lastY=0,isDrag=false,downTime=0,tx=0,ty=0

  119. w.main.setOnTouchListener(function(view, event){
  120.     var a=event.getAction(), x=event.getRawX(), y=event.getRawY()
  121.     switch(a){
  122.         case event.ACTION_DOWN:
  123.             lastX=x; lastY=y; tx=x; ty=y; downTime=Date.now(); isDrag=false; return true
  124.         case event.ACTION_MOVE:
  125.             if(Math.abs(x-lastX)>5||Math.abs(y-lastY)>5){
  126.                 isDrag=true
  127.                 ui.run(function(){ w.setPosition(w.getX()+(x-lastX), w.getY()+(y-lastY)) })
  128.                 lastX=x; lastY=y
  129.             }
  130.             return true
  131.         case event.ACTION_UP:
  132.             var dur=Date.now()-downTime, dx=Math.abs(x-tx), dy=Math.abs(y-ty)
  133.             if(!isDrag&&dx<10&&dy<10){
  134.                 if(dur>500){  // 长按切换循环/单次
  135.                     LOOP_MODE=!LOOP_MODE
  136.                     toast(LOOP_MODE?"循环模式":"单次模式")
  137.                     ui.run(function(){ w.txt.setText(LOOP_MODE?"循":"单") })
  138.                 }else if(isRunning){  // 短按暂停
  139.                     isRunning=false
  140.                     for(var i=0;i<workers.length;i++) workers[i].interrupt()
  141.                     workers=[]
  142.                     if(fileReader) fileReader.close()
  143.                     toast("暂停")
  144.                 }else{  // 短按启动
  145.                     isRunning=true
  146.                     workers=[]
  147.                     saveQueue=[]
  148.                     initFileReader()  // 初始化文件读取
  149.                     
  150.                     workers.push(threads.start(saverJob))      // 启动保存线程
  151.                     for(var i=0;i<THREADS;i++){
  152.                         workers.push(threads.start(workerJob))  // 启动工作线程
  153.                     }
  154.                     toast("启动"+THREADS+"线程")
  155.                 }
  156.             }
  157.             isDrag=false; return true
  158.     }
  159.     return false
  160. })

  161. // ========== 初始化 ==========
  162. if(files.exists(SRC_FILE)){
  163.     toast("文件存在,点击启动")
  164. } else {
  165.     files.createWithDirs(SRC_FILE)
  166.     toast("请先在"+SRC_FILE+"写入内容")
  167. }
  168. ui.run(function(){ w.txt.setText(LOOP_MODE?"循":"单") })

  169. // ========== 主循环 ==========
  170. while(true) sleep(1000)
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

261

主题

3943

回帖

1万

积分

博士生

萌新

Rank: 7Rank: 7Rank: 7

金币
3257
好评
10
信誉
73
发表于 2026-2-21 17:42:21 来自手机  | 显示全部楼层  来自 江西
看看教程
回复

使用道具 举报

0

主题

2964

回帖

6897

积分

硕士生

Rank: 6Rank: 6

金币
3316
好评
0
信誉
100

MT论坛新人考神MT论坛帅哥

发表于 2026-2-21 17:47:29 来自手机  | 显示全部楼层  来自 浙江
感谢分享
回复

使用道具 举报

3

主题

7187

回帖

1万

积分

博士生

NineQing

Rank: 7Rank: 7Rank: 7

金币
5827
好评
3
信誉
100

考神MT论坛最佳新人MT论坛新人MT论坛帅哥

发表于 2026-2-21 18:21:40 来自手机  | 显示全部楼层  来自 山东
感谢分享
回复

使用道具 举报

123

主题

3513

回帖

1万

积分

博士生

●一只菜鸡●

Rank: 7Rank: 7Rank: 7

金币
3512
好评
85
信誉
122

考神MT论坛新人MT论坛最佳新人MT论坛帅哥MT论坛活跃会员

发表于 2026-2-21 18:34:58 来自手机  | 显示全部楼层  来自 河北
看看隐藏,论坛有你更精彩!
回复

使用道具 举报

96

主题

1176

回帖

4294

积分

大学生

哈哈

Rank: 5Rank: 5

金币
1456
好评
6
信誉
100

MT论坛最佳新人考神MT论坛新人MT论坛帅哥

发表于 2026-2-21 18:35:23 来自手机  | 显示全部楼层  来自 广西
看看
回复

使用道具 举报

26

主题

1059

回帖

5239

积分

硕士生

Rank: 6Rank: 6

金币
434
好评
5
信誉
102
发表于 2026-2-21 19:10:53 来自手机  | 显示全部楼层  来自 广东
给力啊真的给力啊
回复

使用道具 举报

4

主题

1362

回帖

6267

积分

硕士生

Rank: 6Rank: 6

金币
1236
好评
0
信誉
98
发表于 2026-2-21 19:11:58 来自手机  | 显示全部楼层  来自 福建
6666666
回复

使用道具 举报

4

主题

1362

回帖

7617

积分

硕士生

幼儿园大班

Rank: 6Rank: 6

金币
1807
好评
1
信誉
100

MT论坛帅哥考神

发表于 2026-2-21 19:18:02 来自手机  | 显示全部楼层  来自 广东
看看隐藏
回复

使用道具 举报

13

主题

691

回帖

2537

积分

大学生

Rank: 5Rank: 5

金币
890
好评
5
信誉
101
发表于 2026-2-21 19:33:50 来自手机  | 显示全部楼层  来自 浙江
更新了一下
回复

使用道具 举报

18

主题

2774

回帖

7696

积分

硕士生

Rank: 6Rank: 6

金币
955
好评
1
信誉
102
发表于 2026-2-21 19:56:14 来自手机  | 显示全部楼层  来自 河南
看看隐藏
回复

使用道具 举报

4

主题

1921

回帖

6407

积分

硕士生

Rank: 6Rank: 6

金币
4434
好评
1
信誉
102

考神MT论坛最佳新人

QQ
发表于 2026-2-21 20:08:45 来自手机  | 显示全部楼层  来自 广东
看看
回复

使用道具 举报

0

主题

986

回帖

1680

积分

高中生

Rank: 4

金币
99
好评
1
信誉
100
发表于 2026-2-21 20:11:46 来自手机  | 显示全部楼层  来自 江西
看看隐藏
回复

使用道具 举报

172

主题

3413

回帖

1万

积分

博士生

大宇宙

Rank: 7Rank: 7Rank: 7

金币
6946
好评
261
信誉
109

MT论坛帅哥考神MT论坛最佳新人MT论坛活跃会员MT论坛侠客MT论坛灌水老大MT论坛新人

QQ
发表于 2026-2-21 20:16:04 来自手机  | 显示全部楼层  来自 江西
感谢分享
回复

使用道具 举报

1

主题

3656

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
7754
好评
24
信誉
241
发表于 2026-2-21 20:16:54 来自手机  | 显示全部楼层  来自 广东
看看隐藏
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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