//本脚本的目的是,将OA答复列表中的图片签名识别为文字签名,便于后续替换修改。
//使用过程中,将碰到的图片签名截图保存并且命名为对应姓名,然后脚本将自动识别图片签名。
//图片签名排版为右对齐,为了提高效率,只需识别右侧区域。
//截图文件的命名形式为:某某某.bmp
//翻页进度条的主体颜色为D1D1D1,
//翻页进度条的轨道最底端的坐标和颜色为(1916,1036,"FFFFFF")。
//第一步,定义文件目录、签名区域坐标、翻页进度条最底端的坐标和颜色。
mulu = "D:\OA\OA签名\"
x1 = 1426
y1 = 108
x2 = 1567
y2 = 1006
x3 = 1916
y3 = 1036
yanse = "FFFFFF"
//第二步,遍历目录中的所有截图文件(最后一个数组是空的)
wenjianming = Lib.文件.遍历指定目录下所有文件名(mulu)
//第三步,翻页到顶部,Ctrl+Home
KeyDown 17, 1
KeyPress 36, 1
KeyUp 17, 1
Delay 500
//第四步,将每个截图文件都查找一遍
yema = 1
lianjieming = ""
Rem 查找
For i = 0 To UBound(wenjianming)-1
FindPic x1, y1, x2, y2, mulu & wenjianming(i), 0.9, intX, intY
If intX > 0 And intY > 0 Then
lianjieming = lianjieming & " " & yema & intY & ":" & Left(wenjianming(i), Len(wenjianming(i))-4)
wenjianming(i)=""
End If
Next
//第五步,判断滚动条是否到底,没有的话,下翻一页,再次识别
IfColor x3, y3, yanse, 0 Then
yema = yema + 1
KeyPress "PageDown", 1
Delay 200
Goto 查找
End If
//第六步,判断查找到的图片签名数量是否为0
If lianjieming = "" Then
xingming = Array(0,0)
xing = Array(0,0)
ming = Array(0,0)
Goto 输出
End If
//第七步,排列签名,按页码和Y轴坐标从小到大排列(查找是按文件顺序,此时按排版顺序)
//首先,将lianjieming分割到一个数组中,再定义两个相同长度的数组,用空格分割的数组,第一个元素为零长度字符
xingming = Split(lianjieming, " ")
xing = xingming
ming = xingming
For i = 1 To UBound(xingming)
fenge = Split(xingming(i), ":")
xing(i) = Cint(fenge(0))
ming(i) = fenge(1)
Next
//然后,用冒泡法对数字进行排序,姓名跟着排序,用jiaohuan=1标记排序未完成,所有的姓名按顺序保存在数组ming中
Do
jiaohuan = 0
For i = 1 To UBound(xingming)-1
j = i + 1
qian = xing(i)
hou = xing(j)
zuo = ming(i)
you = ming(j)
If qian > hou Then
xing(i) = hou
xing(j) = qian
ming(i) = you
ming(j) = zuo
jiaohuan = 1
End If
Next
Loop While jiaohuan = 1
//第八步,调试输出
Rem 输出
TracePrint lianjieming
For i = 1 To UBound(xingming)
TracePrint xingming(i)
Next
For i = 1 To UBound(xing)
TracePrint xing(i)
Next
For i = 1 To UBound(ming)
TracePrint ming(i)
Next
按键精灵之识别图片签名
于 2025-02-27 21:02:13 首次发布