基于按键精灵的ESS工单批处理的设计与实现

时间:2022-09-19 10:19:08

基于按键精灵的ESS工单批处理的设计与实现

【摘要】 随着网络智能化的发展,邯郸联通推出了一项新的通信服务产品―一号双机,由于当初受理时的纰漏,产品在带动收入的同时也产生了高额的欠费。为解决这一问题,要求所有一号双机的固话号码变更为预付费类型,而这两万多个号码若要人工来完成业务修改就是一项很繁琐的工作。本文通过使用自动化脚本编辑工具―按键精灵,编写批处理脚本,来使复杂的工作简单化,繁重的工作轻松化,解放双手的同时还提高了工作效率。

【关键词】 按键精灵 批处理 脚本 自动输入

一、引言

2014年中国联通邯郸市分公司启动欠费追缴专项工作,其中大量一号双机的固话号码最初是按后付费类型受理的,导致后期产生了巨额欠费,造成公司追缴工作的困难,给财务管理的带来严重影响。为了能够有效地遏制此类号码产生欠费,需要将该批号码的后付费类型改为预付费类型。但目前中国联通电子化销售服务管理系统(ESS系统)已关闭所有批量受理权限,手工处理一分钟完成2个,每人每天工作8小时,则每天能处理960个,2万个号码全部处理完毕需要21天的时间,由于需要处理的号码数量巨大,加之人在长时间集中精力的情况下工作,极易出现差错,并不能保证操作的准确,因此这种在理想状态下完全靠人工处理是不现实的,于是考虑通过编写程序实现工单批处理。

二、概述

按键精灵是一款模拟鼠标键盘动作的免费软件。通过制作脚本,让按键精灵代替双手自动执行一系列鼠标键盘动作,将工作人员的重复性操作全部由计算机替代, 最大程度地实现业务操作的自动化[1]。程序员在按键精灵中编写基于VBScript的脚本语言,该脚本可以从Excel表中读取待受理号码,自动录入ESS系统,并在业务类型中选择预付费类型,最后填写受理人员、受理人员联系方式、备注信息等内容,确定提交后完成整个受理过程。

三、总体设计

3.1开发环境

操作系统: WIN 7

显示器分辨率:1920*1080

开发工具:按键精灵2014.02

开发语言:VBScript

3.2实现流程

(图1)

3.3关键技术的解决方案

关键一:打开和关闭Excel工作表。

完成打开Excel表的功能可使用Call Plugin.Office. OpenXls插件命令, 该命令只有一个参数, 其含义是打开文件的绝对路径信息, 参数的设定只要根据具体情况设定即可。例如文件放在D盘根目录下,调用命令可写成[3]:

Call Plugin.Office.OpenXls("D:\待修改号码.xlsx”)

完成关闭Excel表的功能可使用Call Plugin.Office. CloseXls插件命令,关闭Excel表命令可写成:

Call Plugin.Office.CloseXls()

关键二:按行读取Excel工作表中的单元格数据,写入ESS系统中的业务号码文本框。

读取Excel表中某单元格的数据, 可使用Plugin.Office. ReadXls命令, 获取读到的数据可写成:

t = Plugin.Office.ReadXls(a, b, c)

参数 a代表工作表编号,参数b代表行号, 参数c代表列号。数据写入则通过调用SayString命令实现,可写成SayString t,即在指定文本框中写入Excel表中的数据。

关键三:鼠标找图。

找图操作是整个批处理的关键步骤,它决定着自动处理程序执行是否成功。首先,将鼠标要点击的按钮利用按键精灵中的抓抓工具进行截图,保存成.bmp位图图片,注意截图时要保证图片四个角的像素颜色是一致的,这样脚本才能准确找到该图。其次,将截图上传到该脚本下的附件中。最后,编辑脚本代码,实现找图操作。该操作可使用如下命令:

FindPic 900,200,1330,250,"Attachment:\业务号码.bmp",0.9,intX,intY

If intX > 0 And intY > 0 Then

MoveTo intX+220, intY+10

Delay 1000

LeftClick 1

在屏幕上900,200,1330,250的范围内查找图片“业务号码.bmp”,准确度0.9,如果找到该图片,即执行单击操作,在单击操作执行前,可以增加一个1000毫秒的延迟,以提高脚本运行的有效性。查找范围四个值的含义为:左上角X坐标,左上角Y坐标,右下角X坐标,右下角Y坐标,如欲在整个屏幕范围内进行查找,亦可将查找范围设定为0,0,1920,1080。

关键四:遇到意外事件时,脚本自动暂停,并发出警告提示音。

在脚本运行过程中,有很多意想不到的事情发生,如ESS系统在月初和月末时运行较缓慢,意外触碰鼠标或键盘等,这些都会导致脚本运行紊乱,必须经程序员手动执行暂停脚本才能终止。在使用以下命令时,可解决上述问题。

FindPic 900,200,1330,250,"Attachment:\业务号码.bmp",0.9,intX,intY

If intX > 0 And intY > 0 Then

MoveTo intX+220, intY+10

Delay 1000

LeftClick 1

Delay 1000

SayString t

Delay 1000

Else

MessageBox “找不到业务号码输入框”

Delay 1000

Call Plugin.Office.CloseXls()

End If

在执行找图操作时,增加if…else…End If判断语句,如果找到指定图片,执行写入号码操作,如果未找到指定图片,则弹出警告框,提示“找不到业务号码输入框”,并关闭Excel表,释放资源,注意在每步执行前增加一定的延迟,保证响应时间。

关键五:确定循环结构。

在完成脚本命令的编写后,进行执行一遍的测试,如果测试通过,则需进行循环语句的编写,以确保脚本在无人值守的情况下,反复执行,最终实现号码的批处理。执行循环命令的语句如下:

Dim i

For i=1 to 100

……

Next

Dim语句用来定义变量,参数i表示循环次数;使用For语句可根据需要设置循环次数,上述语句中脚本可自动执行100次;For语句和Next语句要成对出现,省略号部分是程序运行一遍的命令,这样才能保证循环语句的正确执行。

3.4主要程序清单

Dim i

Call Plugin.Office.OpenXls("D:\待修改号码.xlsx”)

For i=1 to 100

t = Plugin.Office.ReadXls(1, i, 1)

FindPic 900,200,1330,250,”Attachment:\业务号码.bmp”,0.9,intX,intY

If intX > 0 And intY > 0 Then

MoveTo intX+220, intY+10

Delay 1000

LeftClick 1

Delay 1000

SayString t

Delay 1000

Else

MessageBox “找不到业务号码文本框”

Delay 1000

Call Plugin.Office.CloseXls()

End If

F i n d P i c 0 , 0 , 1 9 2 0 , 1 0 8 0 ,”A t t a c h m e n t : \查询.bmp”,0.9,intX,intY

If intX > 0 And intY > 0 Then

MoveTo intX+20, intY+5

Delay 1000

LeftClick 1

Delay 6000

Else

MessageBox “找不到查询按钮”

Delay 1000

Call Plugin.Office.CloseXls()

End If

FindPic 0,0,1920,1080,”Attachment:\用户业务信息.bmp”,0.9,intX,intY

If intX > 0 And intY > 0 Then

MoveTo intX+20, intY+5

Delay 1000

LeftClick 1

Delay 2000

Else

MessageBox “找不到用户业务信息选项卡”Delay 1000

Call Plugin.Office.CloseXls()

End If

FindPic 330,300,760,450,”Attachment:\后付费.bmp”,0.9,intX,intY

If intX > 0 And intY > 0 Then

MoveTo intX+20, intY+5

Delay 1000

LeftClick 1

Delay 2000

Else

MessageBox “找不到后付费文本框”

Delay 1000

Call Plugin.Office.CloseXls()

End If

FindPic 330,300,760,450,”Attachment:\准预付费.bmp”,0.9,intX,intY

If intX > 0 And intY > 0 Then

MoveTo intX+20, intY+5

Delay 1000

LeftClick 1

Delay 2000

Else

MessageBox “找不到准预付费选项”

Delay 1000

Call Plugin.Office.CloseXls()

End If

FindPic 1480,650,1920,693,”Attachment:\申请联系人.bmp”,0.8,intX,intY

If intX > 0 And intY > 0 Then

MoveTo intX+150, intY+10

Delay 1000

LeftClick 1

Delay 1000

SayString “1”

Delay 1000

Else

MessageBox “找不到申请联系人文本框”

Delay 1000

Call Plugin.Office.CloseXls()

End If

FindPic 310,680,730,730,”Attachment:\申请联系信息.bmp”,0.9,intX,intY

If intX > 0 And intY > 0 Then

MoveTo intX+150, intY+20

Delay 1000

LeftClick 1

Delay 1000

SayString “1”

Delay 1000

Else

MessageBox “找不到申请联系信息文本框”Delay 1000

Call Plugin.Office.CloseXls()

End If

FindPic 340,800,1340,880,”Attachment:\业务备注.bmp”,0.9,intX,intY

If intX > 0 And intY > 0 Then

MoveTo intX+150, intY+20

Delay 1000

LeftClick 1

Delay 1000

SayString “市场部通知改预付费”

Delay 1000

Else

MessageBox “找不到业务备注文本域”Delay 1000

Call Plugin.Office.CloseXls()

End If

F i n d P i c 0 , 0 , 1 9 2 0 , 1 0 8 0 ,”A t t a c h m e n t : \确定.bmp”,0.9,intX,intY

If intX > 0 And intY > 0 Then

MoveTo intX+20, intY+5

Delay 1000

LeftClick 1

Delay 6000

Else

MessageBox “找不到确定按钮”

Delay 1000

Call Plugin.Office.CloseXls()

End If

……

Next

Delay 1000

Call Plugin.Office.CloseXls()

四、结束语

通过使用按键精灵对脚本进行编写后,每天安排2台电脑同时进行批量受理的工作, 运行时间在10小时以上,每台电脑每天受理号码数量在1000至1200之间,每天可受理2000至2400个号码,共用8天的时间完成了批量受理的工作,大大提高了工作效率。目前脚本还可生成.exe的可执行文件,增强了脚本的可复制性和可推广性。

缺点:由于软件虚拟了键盘的诸多功能,因此在程序执行的过程中经常会出现停滞运行的情况,如果夜间停止运行,在没有认为干预的情况下,程序不能实现自动启动,继续工作[4]。而且上述脚本只在1920*1080分辨率的显示器上测试成功,对于其它分辨率下的批处理工作尚未实验成功。

改进:为了能够保证自动执行的效果, 可使用按键盒子,通过将程序置于按键盒子中, 提高运行效率和准确度[4]。而适应不同分辨率的显示器问题,还需进一步优化找图功能,以便能更大限度地增加脚本的实用性。

参 考 文 献

[1] 杨斌.按键精灵参与下采编业务的新探索[J].图书馆工作与研究, 2015(02):77-79.

[2] 沈健,蒋任生,胡迎凯,张馨予.按键精灵维护计量基础信息的技术解决方案[J].大众用电, 2013(03):23-24.

[3] 高琪琪.基于按键精灵的自动输入程序的实现[J].黑龙江科技信息, 2012(10):96.

[4] 张海云,于海燕.巧用按键精灵实现宽带账号的自动绑定[J].数字技术与应用, 2012(03):27-29.

上一篇:太阳能自适应窗户控制器设计 下一篇:文学学·文学地理学·文学文本分析学