Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9471666
  • 博文数量: 1751
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 20101
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1751)

文章存档

2024年(27)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: Windows平台

2020-02-18 16:03:53

一个demo 包含函数定义, 鼠标动作, 键盘输入, 时间控制, 流程控制, 跳转. 以后可供参考

点击(此处)折叠或打开

  1. '搜索的视图大小。
  2. STD_LEFT = 20
  3. STD_TOP = 100
  4. STD_RIGHT = 620
  5. STD_BOTTOM = 1000
  6.     
  7. Function DoClick
  8.     LeftDown 1
  9.     Delay 20
  10.     LeftClick 1
  11.     Delay 20
  12.     LeftUp 1
  13.     Delay 1
  14.     LeftUp 1
  15.     Delay 1
  16. End Function

  17. Function CloseAGWindow
  18.     MoveTo 616, 8
  19.     Delay 500
  20.     LeftClick 1
  21.     LeftUp 1
  22. End Function

  23. Function LoadAGFromIM
  24.     CloseAGWindow
  25.     '==========以下是按键精灵录制的内容========== 需要把 99U 放置在屏幕右下角, 非自动隐藏状态。    
  26.     iconRetry = 3
  27.     While (iconRetry > 0)
  28.         img = "C:\Users\ray\Desktop\AG_BMP\AppIco.bmp"
  29.         FindPic 1000, 990, 1200, 1020, img, 0.9, BmpPos(0), BmpPos(1)
  30.         If (BmpPos(0) >= 0) Then
  31.             iconRetry = 0
  32.         Else
  33.             Delay 1000
  34.             iconRetry = iconRetry -1
  35.         End If
  36.     Wend
  37.     
  38.     If (BmpPos(0) <= 0) Then
  39.         BmpPos (0) = 1055
  40.         BmpPos(1) = 1008
  41.     End If
  42.     
  43.     If (BmpPos(0) >= 0) Then
  44.         MoveTo BmpPos(0), BmpPos(1)
  45.         Delay 100
  46.         LeftDoubleClick 1
  47.         Delay 78
  48.         MoveTo 1017, 564
  49.         LeftClick 1
  50.     End If    
  51.     
  52.     MoveTo 1017, 564
  53.     LeftClick 1
  54.     
  55. '==========以上是按键精灵录制的内容==========
  56. End Function

  57. Function btnBackClick        '返回按钮。
  58.     MoveTo 89,116
  59.     DoClick
  60. End Function

  61. Function ReloadApp            ' 浏览器刷新菜单
  62.     MoveTo 79,62
  63.     DoClick
  64. End Function


  65. '全局, 根据图像列表, 找到第一个匹配的对象, 并返回坐标点。
  66. Dim BmpList(100)
  67. Dim BmpIdx        '当前正在查找图像的位置 0 坐标开始
  68. Dim BmpPos(2) '第一个找到的坐标位置。 X, Y

  69. Function FindBmp(bmpPath)
  70.     img = "C:\Users\ray\Desktop\AG_BMP\"' & bmpPath & "bmp"
  71.     img = img & bmpPath
  72.     img = img & ".bmp"
  73.     isFileExist = Plugin.File.IsFileExist(img)
  74.     If isFileExist = True Then
  75.         FindPic STD_LEFT, STD_TOP, STD_RIGHT, STD_BOTTOM, img, 0.9, BmpPos(0), BmpPos(1)
  76.     Else
  77.         BmpPos(0) = -1
  78.         BmpPos(1) = -1
  79.     End If
  80.     
  81.     FindBmp = BmpPos(0)
  82.     If (BmpPos(0) > 0) And (BmpPos(1) > 0) Then //得到确切的位置。即中心点坐标。
  83.         Set Bmp = CreateObject("WIA.ImageFile")
  84.         Bmp.LoadFile (img)
  85.         width = Bmp.Width
  86.         height = Bmp.Height
  87.         BmpPos(0) = BmpPos(0) + Round(width/2)
  88.         BmpPos(1) = BmpPos(1) + Round(height/2)
  89.     End If        
  90. End Function

  91. '从 BmpList 中前 bmpCnt个中依次查找, 找到的内容进行反馈到 bmpInx 和 BmpPos中。
  92. Dim BmpNamePrefix '图片前缀
  93. Function LocateBmpFromList(BmpNameCnt) '图片个数
  94.     BmpList(0) = BmpNamePrefix    
  95.     idx = 1
  96.     While idx < BmpNameCnt
  97.         img = BmpNamePrefix & "_" & (idx - 1)
  98.         BmpList(idx) = img        
  99.         idx = idx + 1
  100.     Wend
  101.     
  102.     idx = 0
  103.     While idx < BmpNameCnt
  104.         FindBmp (BmpList(idx))
  105.         If (BmpPos(0) > 0) And (BmpPos(1) > 0) Then
  106.             BmpIdx = idx
  107.             LocateBmpFromList = BmpIdx
  108.             Exit Function
  109.         End If
  110.         idx = idx + 1
  111.     Wend
  112.     
  113.     BmpIdx = -1
  114. End Function

  115. MinSpan = 5
  116. DefSpan = 10
  117. sMinute = -10
  118. eMinute = 0
  119. spanMinute = 0
  120. iNewDay = - 1
  121. iTimeEscape = 0
  122. iDoNothing = 0
  123. sHour = 0 // reload per hour

  124. Function InitVariant
  125.     If (iNewDay < 0) Then
  126.         iNewDay = Date
  127.         sMinute = -10
  128.     End If
  129. End Function

  130. Function CheckMinuteSpan
  131.     eMinute = Minute(Now)
  132.     If eMinute >= sMinute Then
  133.         spanMinute = eMinute - sMinute
  134.     Else
  135.         spanMinute = eMinute - sMinute + 60
  136.     End If
  137. End Function

  138. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  139. DebugImgIndex = 0
  140. ' 主程序开始
  141. Rem LOOP_START

  142. eHour = Hour(Now)
  143. If (eHour <> sHour) Then
  144.     sHour = eHour    
  145.     'LoadAGFromIM '重新启动一个守护实例, 查看是否打工成功。
  146. End If

  147. Delay 1000
  148. InitVariant
  149. iDoNothing = iDoNothing + 1

  150. '========= 首页, 领取金币按钮 ==========
  151. BmpNamePrefix = "GetCoin"
  152. LocateBmpFromList(5)
  153. If (BmpIdx >= 0) Then
  154.     MoveTo BmpPos(0),BmpPos(1)                ' 领取金币位置
  155.     DoClick
  156.     Goto LOOP_START
  157. End If

  158. '========= 一键获取 按钮 ==========
  159. BmpNamePrefix = "btnOneKeyGet"
  160. LocateBmpFromList(5)

  161. If (BmpIdx >= 0) Then
  162.     CheckMinuteSpan
  163.     If (spanMinute <= MinSpan) Then
  164.         btnBackClick
  165.     Else
  166.         sMinute = Minute(Now)    
  167.         MoveTo BmpPos(0), BmpPos(1)        
  168.         DoClick    
  169.         Delay 6000'等待倒计时结束
  170.     End If
  171. End If

  172.  
  173. ' 一键获取后出现的不理会和领取的按钮。
  174. BmpNamePrefix = "btnGetit"
  175. LocateBmpFromList(5)
  176. If (BmpIdx >= 0) Then
  177.     MoveTo BmpPos(0),BmpPos(1)                
  178.     DoClick
  179.     Delay 1000
  180.     'Goto LOOP_START
  181. End If

  182. ' 一键获取后的关闭未处理事件。
  183. BmpNamePrefix = "btnClose"
  184. LocateBmpFromList(5)
  185. If (BmpIdx >= 0) Then
  186.     MoveTo BmpPos(0),BmpPos(1)                
  187.     DoClick
  188.     Delay 1000
  189.     'Goto LOOP_START
  190. End If
  191. '========= 一键获取后, 完成打工的“尚有未处理事件”的提示框 ==========
  192. BmpNamePrefix = "btnOneKeyGetEvent"
  193. LocateBmpFromList(5)
  194. If (BmpIdx >= 0) Then
  195.     MoveTo BmpPos(0),BmpPos(1)                
  196.     DoClick
  197.     Delay 1000
  198.     'Goto LOOP_START
  199. End If
  200. '========= 无人打工的界面 ==========
  201. BmpNamePrefix = "AddSym"
  202. LocateBmpFromList(5)
  203. If (BmpIdx >= 0) Then
  204.     MoveTo BmpPos(0),BmpPos(1)                
  205.     DoClick
  206.     Delay 3000
  207.     sMinute = Minute(Now)    
  208.     'Goto LOOP_START
  209. End If

  210. '========= 新派遣打工 按钮 ==========
  211. BmpNamePrefix = "StartWork"
  212. LocateBmpFromList(5)
  213. If (BmpIdx >= 0) Then
  214.     sMinute = Minute(Now)
  215.     MoveTo 300,940
  216.     DoClick
  217.     Delay 1000
  218.     'LoadAGFromIM '重新启动一个守护实例, 查看是否打工成功。
  219.     
  220.     Goto LOOP_START
  221. End If            

  222. '========= 首页, 派遣按钮 ==========
  223. BmpNamePrefix = "btnStart"
  224. LocateBmpFromList(5)
  225. If (BmpIdx >= 0) Then
  226.     CheckMinuteSpan
  227.     If (spanMinute >= DefSpan) Then
  228.         MoveTo 212,941
  229.         DoClick
  230.         Delay 1000
  231.     End If
  232.     
  233.     Goto LOOP_START
  234. End If

  235. '========= 生产按钮 ==========
  236. BmpNamePrefix = "btnProduce"
  237. LocateBmpFromList(5)
  238. If (BmpIdx >= 0) Then
  239.     MoveTo BmpPos(0),BmpPos(1)
  240.     DoClick
  241.     Goto LOOP_START
  242. End If
  243. '====== MoreSee , repeat for more times doWorker action =====
  244. BmpNamePrefix = "MoreWorker"
  245. LocateBmpFromList(5)
  246. If (BmpIdx >= 0) Then
  247.     MoveTo BmpPos(0),BmpPos(1)    
  248.     DoClick
  249.     Goto LOOP_START
  250. End If

  251. '========= 重复登录按钮 ==========
  252. BmpNamePrefix = "btnExit"
  253. LocateBmpFromList(5)
  254. If (BmpIdx >= 0) Then     
  255.     '此时可能在手机端有操作, 那么冗余10分钟时间给手机端使用。
  256.     Delay 600000
  257.     MoveTo BmpPos(0), BmpPos(1)
  258.     DoClick
  259.     Goto LOOP_START
  260. End If

  261. '========= 个人中心页面/ 天使名*录页面 ==========
  262. BmpNamePrefix = "selfcenter"
  263. LocateBmpFromList(5)
  264. If (BmpIdx >= 0) Then
  265.     btnBackClick
  266.     Goto LOOP_START
  267. End If
  268. BmpNamePrefix = "SomeBody"
  269. LocateBmpFromList(5)
  270. If (BmpIdx >= 0) Then
  271.     btnBackClick
  272.     Goto LOOP_START
  273. End If

  274. '========= 每日签到 ==========
  275. BmpNamePrefix = "SigIn"
  276. LocateBmpFromList(5)
  277. If (BmpIdx >= 0) Then
  278.     MoveTo BmpPos(0),BmpPos(1)
  279.     DoClick
  280.     Delay 1000
  281. End If

  282. BmpNamePrefix = "SigOK"
  283. LocateBmpFromList(5)
  284. If (BmpIdx >= 0) Then
  285.     BmpNamePrefix = "SigClose"
  286.     LocateBmpFromList(5)
  287.     If (BmpIdx >= 0) Then
  288.         MoveTo BmpPos(0),BmpPos(1)
  289.         DoClick
  290.         'LoadAGFromIM '重新启动一个守护实例, 查看是否打工成功。
  291.         Goto LOOP_START
  292.     End If
  293. End If



  294. '========= 如果到此, 判断是否在主页上。 ==========
  295. BmpNamePrefix = "MainPage"
  296. LocateBmpFromList(5)
  297. If (BmpIdx >= 0) Then
  298.     inMainPage = 1
  299. Else
  300.     inMainPage = 0
  301. End If

  302. If (inMainPage = 0) Then
  303.     iTimeEscape = iTimeEscape + 1
  304. Else
  305.     iTimeEscape = 0
  306. End If

  307. If (iTimeEscape = 20) Then
  308.     'LoadAGFromIM
  309.     iTimeEscape = 0
  310. ElseIf (iTimeEscape = 10) Then
  311.     ReloadApp
  312. Else
  313.     If (iTimeEscape = 5) Then
  314.         btnBackClick
  315.         Delay 1000
  316.     End If
  317. End If


  318. 'imgDebug = CStr(Month(Now)) & "-" & CStr(Day(Now)) & "_" & CStr(Hour(Now)) & "." & CStr(Minute(Now)) & "_" & CStr(DebugImgIndex) & ".bmp"
  319. 'imgDebug = "C:\Users\ray\Desktop\AG_BMP\ScreenShot\" & imgDebug
  320. 'Call Plugin.Pic.PrintScreen(0, 0, 600, 1000, imgDebug)
  321. 'DebugImgIndex = DebugImgIndex + 1

  322. '随机点击' 存在某些弹出框, 例如每日签到等情况
  323. If (iTimeEscape = 5 ) Then
  324.     rndPosX = 320
  325.     rndPosY = 300
  326.     
  327.     While rndPosY < 900
  328.         MoveTo rndPosX, rndPosY
  329.         DoClick
  330.         Delay 10
  331.         rndPosY = rndPosY + 20
  332.     Wend
  333. End If



阅读(3261) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~