郭芳
【摘要】 隨著網絡智能化的發展,邯鄲聯通推出了一項新的通信服務產品—一號雙機,由于當初受理時的紕漏,產品在帶動收入的同時也產生了高額的欠費。為解決這一問題,要求所有一號雙機的固話號碼變更為預付費類型,而這兩萬多個號碼若要人工來完成業務修改就是一項很繁瑣的工作。本文通過使用自動化腳本編輯工具—按鍵精靈,編寫批處理腳本,來使復雜的工作簡單化,繁重的工作輕松化,解放雙手的同時還提高了工作效率。
【關鍵詞】 按鍵精靈 批處理 腳本 自動輸入
一、引言
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.