为什么我要写这么一个脚本?因为我有几十个签证和变更需要分别设置“安装费用”,我发现,一个个的点速度太慢了,于是脑袋一热,想着我为什么不写个脚本模拟按键来解决这重复的操作呢。

于是为了应付当前的工作,用VBScript写了一个简易的脚本,代码如下:

 1 Dim WshShell
 2 Set WshShell = CreateObject("WScript.Shell")
 3
 4 Do
 5     WScript.Sleep 200
 6 Loop Until WshShell.AppActivate("统一设置安装费用")
 7
 8 For k = 1 to 8
 9     If K <> 4 Then
10         '发送Enter键用于选择当前列表
11         WshShell.SendKeys "{Enter}"
12         WScript.Sleep 200
13
14         '发送Alt+Down键用于打开下拉列表
15         WshShell.SendKeys "%{Down}"
16         WScript.Sleep 200
17
18         '发送UP键10次,用于定位到第一个选项[无]
19         WshShell.SendKeys "{UP 10}"
20         WScript.Sleep 100
21
22         '当前楼层数为33,根据列表中的选项,排在第9位
23         WshShell.SendKeys "{Down 9}"
24         WScript.Sleep 100
25
26         '发送Enter键确认当前选项
27         WshShell.SendKeys "{Enter}"
28     End If
29
30     '继续下一个专业
31     WshShell.SendKeys "{Down}"
32 Next

View Code

于是乎,我从重复的选择中解脱,也帮我提升了效率,下面请看对比

自己鼠标点选

用脚本辅助选择

是不是有不一样的感觉。不过VBS脚本虽然方便,却也有一些缺点,比如,如果我打开“统一设置安装费用”的窗口,但是我并没有点击“高层建筑增加费”怎么办,或者某程序弹出消息,使得焦点不在当前窗口怎么办……

于是,我选择操起 AutoIt3 这家伙,我既可以方便的模拟鼠标点击,又可以方便的激活窗口。比起VBS,不说功能强大,至少方便些,不用我自己去造某些轮子(^_^)

用AutoIT重写脚本如下:

 1 #cs ----------------------------------------------------------------------------
 2
 3  AutoIt Version: 3.3.14.5
 4  Author:         lnissi
 5
 6  Script Function:
 7     Template AutoIt script.
 8
 9 #ce ----------------------------------------------------------------------------
10
11 ; Script Start - Add your code below here
12
13 #include <MsgBoxConstants.au3>
14
15 Local $str_Title = "统一设置安装费用"
16 Local $Floor_Count = 61        ;此处设置实际工程楼层数
17
18 ;列表中最大为60,即使点击更多,还是60
19 If $Floor_Count > 60 Then $Floor_Count = 60
20
21 If WinExists($str_Title) = 0 Then
22    MsgBox($MB_OK + $MB_ICONWARNING, "温馨提示", "未找到【" & $str_Title & "】窗口")
23    Exit
24 EndIf
25
26 ;激活窗口
27 WinActivate($str_Title)
28 WinSetState($str_Title, "", @SW_MAXIMIZE)
29
30 ;点击高层建筑增加费
31 ControlClick($str_Title, "", "[CLASS:TGSPDBGrid; INSTANCE:2]", "left", 1, 150, 50)
32 ;点击规则说明
33 ControlClick($str_Title, "", "[CLASS:TGSPDBGrid; INSTANCE:1]", "left", 1, 330, 52)
34
35 #cs
36    ;序号1,电气设备安装工程    从9层开始,递增3层,到60层;更多...
37    ;序号2,消防工程    从9层开始,递增3层,到60层,更多...
38    ;序号3,给排水、采暖、燃气工程    从9层开始,递增3层,到60层;更多...
39    ;序号4,通风空调工程    从36层开始,递增3层,到60层;从9层开始,递增3层,到33层;更多...
40    ;序号5,通信设备及线路工程    从9层开始,递增3层,到60层;更多...
41    ;序号6,建筑智能化系统设备安装工程    从9层开始,递增3层,到60层;更多...
42    ;序号7,安装节能工程-1安装节能电气工程    从9层开始,递增3层,到60层;更多...
43    ;序号8,安装节能工程-2安装节能给排水采暖工程    从9层开始,递增3层,到60层;更多...
44 #ce
45
46 For $n = 1 to 8 Step 1
47
48    ;初始化 $Count_Down 用于选择与实际楼层相匹配的列表
49    Local $Count_Down = 1
50
51    Switch $n
52    Case 1 to 3, 5 to 8    ;除通风空调以外
53       #Region "计算需要 {DOWN} 多少次"
54       ;根据 $Floor_Count 中设置的楼层数,进行循环匹配
55       ;匹配成功就跳出循环,匹配不成功则 $Count_Down 累加
56       For $Floor_Num = 9 to 60 Step 3
57          If $Floor_Count <= $Floor_Num Then
58             ExitLoop
59          Else
60             $Count_Down += 1
61          EndIf
62       Next
63       #EndRegion
64    Case 4    ;通风空调工程
65       #Region "计算需要 {DOWN} 多少次"
66       ;第一次循环,条件满足,则跳出循环。否则累加 $Count_Down
67       For $Floor_Num = 36 to 60 Step 3
68          If $Floor_Count <= $Floor_Num And $Floor_Count > 33 Then
69             ExitLoop
70          Else
71             $Count_Down += 1
72          EndIf
73       Next
74       ;第二次循环,如果条件满足,继续累加 $Count_Down
75       If $Floor_Num <= 33 Then
76          For $Floor_Num = 9 to 33 Step 3
77             If $Floor_Count <= $Floor_Num Then
78                ExitLoop
79             Else
80                $Count_Down += 1
81             EndIf
82          Next
83       EndIf
84       #EndRegion
85    EndSwitch
86
87    WinWaitActive($str_Title)    ;为避免列表选择时的窗口无法获得焦点,需激活窗口
88    ControlSend($str_Title, "", "[CLASS:TGSPDBGrid; INSTANCE:1]", "{F2}")
89    Send("!{DOWN}")    ;发送 ALT + DOWN ,使列表出现
90    Send("{UP 20}")    ;发送 UP 键 20 次,使当前选择的列表置顶[无]
91    ;根据计算得出的列表位置,选择与楼层数对应的列表
92    For $i = 1 to $Count_Down Step 1
93       Send("{DOWN}")
94    Next
95    Send("{ENTER}")
96    Send("{DOWN}")    ;选择下一个工程类别
97 Next

View Code

转载于:https://www.cnblogs.com/lnissi/p/11326685.html

堆积木——GBQ4.0设置“统一设置安装费用”中的“高层建筑增加费”相关推荐

  1. html打开新窗口设置窗口属性,HTML之:让网页中的a标签属性统一设置-如‘新窗口打开’...

    在开发过程中,我们往往想在页面中,给设置一个统一的默认格式,例如我们想让链接:"在新窗口打开",我们就可以使用标签 在网页中添加这段代码: [注解] 标签为页面上的所有链接规定默认 ...

  2. Spring Cloud中Feign如何统一设置验证token

    前面我们大致的聊了下如何保证各个微服务之前调用的认证问题 Spring Cloud中如何保证各个微服务之间调用的安全性 Spring Cloud中如何保证各个微服务之间调用的安全性(下篇) 原理是通过 ...

  3. .NET Core统一设置路由前缀

    NetCore WebAPI 如何设置一个统一的路由前缀 创建一个类,遍历所有的controller,添加一个路由前缀 public class RouteConvention : IApplicat ...

  4. 微信小程序统一设置所有页面背景色

    app.wxss中的样式属于全局样式,可以在app.wxss中添加如下代码来统一设置所有page的样式. page {background-color: rgba(250,250,250,0.90); ...

  5. Android8.0恢复出厂设置失败-BroadcastQueue: Background execution not allowed

    Android7.0恢复出厂设置调用下面的代码可正常恢复出厂 Intent intent = new Intent(Intent. ACTION_MASTER_CLEAR);intent.addFla ...

  6. IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决

    IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决 参考文章: (1)IDEA统一设置编码为utf-8编码及tomcat 乱码问题的解决 (2)https://www.cnblogs. ...

  7. 组策略(八)使用使用自定义RealVNC adm模板对域内工作站设置统一标准设置

    VNC是网络远程管理的利器.VNC软件主要由两个部分组成:VNC Server及VNC Viewer.用户需先将VNC Server安装在被控端的计算机上后,才能在主控端执行VNC Viewer控制被 ...

  8. php怎么解决慢查询,【后端开辟】php-fpm7.0 慢查询设置及申明

    环境申明 root@ubuntu:/home/tb# cat /etc/issue Ubuntu 16.04.2 LTS \n \l root@ubuntu:/home/tb# php -v PHP ...

  9. 《VMware、Citrix和Microsoft虚拟化技术详解与应用实践》一2.4 ESXi 5.0的简单设置...

    2.4 ESXi 5.0的简单设置 要使用刚安装的ESXi系统,需要进行一些简单设置.表2-1所示即为设置ESXi 5.0所使用的按键及说明. 图2-20所示为ESXi启动后显示的控制台窗口,按F2键 ...

  10. CE5.0 - eboot汇编Startup.s中MMU设置流程详细分析

    CE5.0 - eboot汇编Startup.s中MMU设置流程详细分析   以下为SMDK开发板startup.s部分启动代码.   ;------------------------------- ...

最新文章

  1. 图灵奖得主高德纳与 LaTex 有啥关系?90%的人都不知道
  2. Ubuntu 进阶命令——长期不定时更新
  3. 2011考研数学复习注意三点 不提倡题海战术
  4. jsp 获取项目路径,java获取项目路径
  5. 深度学习100例 | 第32天-GRU模型:算法生成小说
  6. dynamodb容器使用_使用DynamoDBMapper扫描DynamoDB项目
  7. ARM系列处理器的分类
  8. 关于排版与交互的问题
  9. easyui打开新的选项卡_Jquery Easyui选项卡组件Tab使用详解(10)
  10. VMware vsphere 中创建虚拟机的方法
  11. Q111:PBRT-V3系统概述
  12. 002-用python设计的第一个游戏
  13. OpenGL超级宝典 使用缓冲为顶点着色器提供数据
  14. ICP-MS测试/电感耦合等离子体质谱仪(型号Perkin Elmer Nexion 300)
  15. sd内存卡 a1 a2 区别
  16. 微信小程序之打开其他小程序(两个小程序必须在同一公众号下关联)wx.navigateToMiniProgram
  17. word保存html格式批注没有了,Word批注保存后再打开没了
  18. html+js+canvas实现画板涂画功能和vue+canvas实现画板涂画功能
  19. 软件测试课程体系应该是什么样的,软件测试是什么?怎样做一名优秀的软件测试工程师?...
  20. Python爬取网站数据

热门文章

  1. 靶机渗透日记 responder
  2. python汉语词频统计_Python之四大名著汉字词频统计
  3. 计算机研究生期末汇报,研究生学期总结ppt.doc
  4. 云网融合赋能智慧转型,“天翼云管 ”开启贴身云管家时代
  5. 计算机课程总结word,大学生的计算机课程总结word.docx
  6. R语言编程 R语言作业
  7. python快速处理excel表格-python 处理 Excel 表格
  8. ROMS 编译upwelling.h
  9. 微软漏洞导致SQL注入威胁
  10. 一个漏洞潜伏54年?谁才是“潜伏界”最强王者