郭芳
【摘要】 隨著網(wǎng)絡(luò)智能化的發(fā)展,邯鄲聯(lián)通推出了一項(xiàng)新的通信服務(wù)產(chǎn)品—一號(hào)雙機(jī),由于當(dāng)初受理時(shí)的紕漏,產(chǎn)品在帶動(dòng)收入的同時(shí)也產(chǎn)生了高額的欠費(fèi)。為解決這一問題,要求所有一號(hào)雙機(jī)的固話號(hào)碼變更為預(yù)付費(fèi)類型,而這兩萬(wàn)多個(gè)號(hào)碼若要人工來完成業(yè)務(wù)修改就是一項(xiàng)很繁瑣的工作。本文通過使用自動(dòng)化腳本編輯工具—按鍵精靈,編寫批處理腳本,來使復(fù)雜的工作簡(jiǎn)單化,繁重的工作輕松化,解放雙手的同時(shí)還提高了工作效率。
【關(guān)鍵詞】 按鍵精靈 批處理 腳本 自動(dòng)輸入
一、引言
2014年中國(guó)聯(lián)通邯鄲市分公司啟動(dòng)欠費(fèi)追繳專項(xiàng)工作,其中大量一號(hào)雙機(jī)的固話號(hào)碼最初是按后付費(fèi)類型受理的,導(dǎo)致后期產(chǎn)生了巨額欠費(fèi),造成公司追繳工作的困難,給財(cái)務(wù)管理的帶來嚴(yán)重影響。為了能夠有效地遏制此類號(hào)碼產(chǎn)生欠費(fèi),需要將該批號(hào)碼的后付費(fèi)類型改為預(yù)付費(fèi)類型。但目前中國(guó)聯(lián)通電子化銷售服務(wù)管理系統(tǒng)(ESS系統(tǒng))已關(guān)閉所有批量受理權(quán)限,手工處理一分鐘完成2個(gè),每人每天工作8小時(shí),則每天能處理960個(gè),2萬(wàn)個(gè)號(hào)碼全部處理完畢需要21天的時(shí)間,由于需要處理的號(hào)碼數(shù)量巨大,加之人在長(zhǎng)時(shí)間集中精力的情況下工作,極易出現(xiàn)差錯(cuò),并不能保證操作的準(zhǔn)確,因此這種在理想狀態(tài)下完全靠人工處理是不現(xiàn)實(shí)的,于是考慮通過編寫程序?qū)崿F(xiàn)工單批處理。
二、概述
按鍵精靈是一款模擬鼠標(biāo)鍵盤動(dòng)作的免費(fèi)軟件。通過制作腳本,讓按鍵精靈代替雙手自動(dòng)執(zhí)行一系列鼠標(biāo)鍵盤動(dòng)作,將工作人員的重復(fù)性操作全部由計(jì)算機(jī)替代, 最大程度地實(shí)現(xiàn)業(yè)務(wù)操作的自動(dòng)化[1]。程序員在按鍵精靈中編寫基于VBScript的腳本語(yǔ)言,該腳本可以從Excel表中讀取待受理號(hào)碼,自動(dòng)錄入ESS系統(tǒng),并在業(yè)務(wù)類型中選擇預(yù)付費(fèi)類型,最后填寫受理人員、受理人員聯(lián)系方式、備注信息等內(nèi)容,確定提交后完成整個(gè)受理過程。
三、總體設(shè)計(jì)
3.1開發(fā)環(huán)境
操作系統(tǒng): WIN 7
顯示器分辨率:1920*1080
開發(fā)工具:按鍵精靈2014.02
開發(fā)語(yǔ)言:VBScript
3.2實(shí)現(xiàn)流程
(圖1)
3.3關(guān)鍵技術(shù)的解決方案
關(guān)鍵一:打開和關(guān)閉Excel工作表。
完成打開Excel表的功能可使用Call Plugin.Office. OpenXls插件命令, 該命令只有一個(gè)參數(shù), 其含義是打開文件的絕對(duì)路徑信息, 參數(shù)的設(shè)定只要根據(jù)具體情況設(shè)定即可。例如文件放在D盤根目錄下,調(diào)用命令可寫成[3]:
Call Plugin.Office.OpenXls("D:\待修改號(hào)碼.xlsx”)
完成關(guān)閉Excel表的功能可使用Call Plugin.Office. CloseXls插件命令,關(guān)閉Excel表命令可寫成:
Call Plugin.Office.CloseXls()
關(guān)鍵二:按行讀取Excel工作表中的單元格數(shù)據(jù),寫入ESS系統(tǒng)中的業(yè)務(wù)號(hào)碼文本框。
讀取Excel表中某單元格的數(shù)據(jù), 可使用Plugin.Office. ReadXls命令, 獲取讀到的數(shù)據(jù)可寫成:
t = Plugin.Office.ReadXls(a, b, c)
參數(shù) a代表工作表編號(hào),參數(shù)b代表行號(hào), 參數(shù)c代表列號(hào)。數(shù)據(jù)寫入則通過調(diào)用SayString命令實(shí)現(xiàn),可寫成SayString t,即在指定文本框中寫入Excel表中的數(shù)據(jù)。
關(guān)鍵三:鼠標(biāo)找圖。
找圖操作是整個(gè)批處理的關(guān)鍵步驟,它決定著自動(dòng)處理程序執(zhí)行是否成功。首先,將鼠標(biāo)要點(diǎn)擊的按鈕利用按鍵精靈中的抓抓工具進(jìn)行截圖,保存成.bmp位圖圖片,注意截圖時(shí)要保證圖片四個(gè)角的像素顏色是一致的,這樣腳本才能準(zhǔn)確找到該圖。其次,將截圖上傳到該腳本下的附件中。最后,編輯腳本代碼,實(shí)現(xiàn)找圖操作。該操作可使用如下命令:
FindPic 900,200,1330,250,"Attachment:\業(yè)務(wù)號(hào)碼.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的范圍內(nèi)查找圖片“業(yè)務(wù)號(hào)碼.bmp”,準(zhǔn)確度0.9,如果找到該圖片,即執(zhí)行單擊操作,在單擊操作執(zhí)行前,可以增加一個(gè)1000毫秒的延遲,以提高腳本運(yùn)行的有效性。查找范圍四個(gè)值的含義為:左上角X坐標(biāo),左上角Y坐標(biāo),右下角X坐標(biāo),右下角Y坐標(biāo),如欲在整個(gè)屏幕范圍內(nèi)進(jìn)行查找,亦可將查找范圍設(shè)定為0,0,1920,1080。
關(guān)鍵四:遇到意外事件時(shí),腳本自動(dòng)暫停,并發(fā)出警告提示音。
在腳本運(yùn)行過程中,有很多意想不到的事情發(fā)生,如ESS系統(tǒng)在月初和月末時(shí)運(yùn)行較緩慢,意外觸碰鼠標(biāo)或鍵盤等,這些都會(huì)導(dǎo)致腳本運(yùn)行紊亂,必須經(jīng)程序員手動(dòng)執(zhí)行暫停腳本才能終止。在使用以下命令時(shí),可解決上述問題。
FindPic 900,200,1330,250,"Attachment:\業(yè)務(wù)號(hào)碼.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 “找不到業(yè)務(wù)號(hào)碼輸入框”
Delay 1000
Call Plugin.Office.CloseXls()
End If
在執(zhí)行找圖操作時(shí),增加if…else…End If判斷語(yǔ)句,如果找到指定圖片,執(zhí)行寫入號(hào)碼操作,如果未找到指定圖片,則彈出警告框,提示“找不到業(yè)務(wù)號(hào)碼輸入框”,并關(guān)閉Excel表,釋放資源,注意在每步執(zhí)行前增加一定的延遲,保證響應(yīng)時(shí)間。
關(guān)鍵五:確定循環(huán)結(jié)構(gòu)。
在完成腳本命令的編寫后,進(jìn)行執(zhí)行一遍的測(cè)試,如果測(cè)試通過,則需進(jìn)行循環(huán)語(yǔ)句的編寫,以確保腳本在無人值守的情況下,反復(fù)執(zhí)行,最終實(shí)現(xiàn)號(hào)碼的批處理。執(zhí)行循環(huán)命令的語(yǔ)句如下:
Dim i
For i=1 to 100
……
Next
Dim語(yǔ)句用來定義變量,參數(shù)i表示循環(huán)次數(shù);使用For語(yǔ)句可根據(jù)需要設(shè)置循環(huán)次數(shù),上述語(yǔ)句中腳本可自動(dòng)執(zhí)行100次;For語(yǔ)句和Next語(yǔ)句要成對(duì)出現(xiàn),省略號(hào)部分是程序運(yùn)行一遍的命令,這樣才能保證循環(huán)語(yǔ)句的正確執(zhí)行。
3.4主要程序清單
Dim i
Call Plugin.Office.OpenXls("D:\待修改號(hào)碼.xlsx”)
For i=1 to 100
t = Plugin.Office.ReadXls(1, i, 1)
FindPic 900,200,1330,250,”Attachment:\業(yè)務(wù)號(hào)碼.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 “找不到業(yè)務(wù)號(hào)碼文本框”
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:\用戶業(yè)務(wù)信息.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 “找不到用戶業(yè)務(wù)信息選項(xiàng)卡”Delay 1000
Call Plugin.Office.CloseXls()
End If
FindPic 330,300,760,450,”Attachment:\后付費(fèi).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 “找不到后付費(fèi)文本框”
Delay 1000
Call Plugin.Office.CloseXls()
End If
FindPic 330,300,760,450,”Attachment:\準(zhǔn)預(yù)付費(fèi).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 “找不到準(zhǔn)預(yù)付費(fèi)選項(xiàng)”
Delay 1000
Call Plugin.Office.CloseXls()
End If
FindPic 1480,650,1920,693,”Attachment:\申請(qǐng)聯(lián)系人.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 “找不到申請(qǐng)聯(lián)系人文本框”
Delay 1000
Call Plugin.Office.CloseXls()
End If
FindPic 310,680,730,730,”Attachment:\申請(qǐng)聯(lián)系信息.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 “找不到申請(qǐng)聯(lián)系信息文本框”Delay 1000
Call Plugin.Office.CloseXls()
End If
FindPic 340,800,1340,880,”Attachment:\業(yè)務(wù)備注.bmp”,0.9,intX,intY
If intX > 0 And intY > 0 Then
MoveTo intX+150, intY+20
Delay 1000
LeftClick 1
Delay 1000
SayString “市場(chǎng)部通知改預(yù)付費(fèi)”
Delay 1000
Else
MessageBox “找不到業(yè)務(wù)備注文本域”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()
四、結(jié)束語(yǔ)
通過使用按鍵精靈對(duì)腳本進(jìn)行編寫后,每天安排2臺(tái)電腦同時(shí)進(jìn)行批量受理的工作, 運(yùn)行時(shí)間在10小時(shí)以上,每臺(tái)電腦每天受理號(hào)碼數(shù)量在1000至1200之間,每天可受理2000至2400個(gè)號(hào)碼,共用8天的時(shí)間完成了批量受理的工作,大大提高了工作效率。目前腳本還可生成.exe的可執(zhí)行文件,增強(qiáng)了腳本的可復(fù)制性和可推廣性。
缺點(diǎn):由于軟件虛擬了鍵盤的諸多功能,因此在程序執(zhí)行的過程中經(jīng)常會(huì)出現(xiàn)停滯運(yùn)行的情況,如果夜間停止運(yùn)行,在沒有認(rèn)為干預(yù)的情況下,程序不能實(shí)現(xiàn)自動(dòng)啟動(dòng),繼續(xù)工作[4]。而且上述腳本只在1920*1080分辨率的顯示器上測(cè)試成功,對(duì)于其它分辨率下的批處理工作尚未實(shí)驗(yàn)成功。
改進(jìn):為了能夠保證自動(dòng)執(zhí)行的效果, 可使用按鍵盒子,通過將程序置于按鍵盒子中, 提高運(yùn)行效率和準(zhǔn)確度[4]。而適應(yīng)不同分辨率的顯示器問題,還需進(jìn)一步優(yōu)化找圖功能,以便能更大限度地增加腳本的實(shí)用性。
參 考 文 獻(xiàn)
[1] 楊斌.按鍵精靈參與下采編業(yè)務(wù)的新探索[J].圖書館工作與研究, 2015(02):77-79.
[2] 沈健,蔣任生,胡迎凱,張馨予.按鍵精靈維護(hù)計(jì)量基礎(chǔ)信息的技術(shù)解決方案[J].大眾用電, 2013(03):23-24.
[3] 高琪琪.基于按鍵精靈的自動(dòng)輸入程序的實(shí)現(xiàn)[J].黑龍江科技信息, 2012(10):96.
[4] 張海云,于海燕.巧用按鍵精靈實(shí)現(xiàn)寬帶賬號(hào)的自動(dòng)綁定[J].數(shù)字技術(shù)與應(yīng)用, 2012(03):27-29.