1 写在前面
全国第七次人口普查在魔幻之年的十月份开始了。本次人口普查和2010年的有很大不同,国家统计局制作了一个录入信息的小程序用来录入各种信息。对于大多数需要接受普查的大众来说,用手机扫码就可以完成信息填写,十分放便,但是对于各位普查员,普查指导员,我们需要用手一个个填写户主底册,实在是非常麻烦。
作为跳一跳轻松10W分的玩家(有空我把跳一跳外挂的代码也放上来。)录入户主姓名底册这件事情肯定是要,,,,使用电脑批量自动化录入啦
2 工作环境
使用windows电脑 按键精灵2014版 有鼠标有屏幕。
安装企业微信电脑版。登录人口普查员账号。
我自己的电脑是华为matebook13
3总体流程
总体流程非常简单,大致就是
1信息导入 录入的户主姓名底册信息做成放便调用的EXCEL表,或者导入按键精灵的数组
2调用按键精录入姓名底册
3调用按键精灵截图插件区域截屏保存
4回到2继续录入下一个户主底册
4信息导入
信息导入非常简单,如果按键精灵可以调用读取EXCEL表,那就直接调读EXCEL表的函数就可以,但是我的环境下调用这个函数就会报错。所以我将信息导入到按键精灵的数组中。
(所有信息都已经隐去)由于不涉及任何港澳台人员,出生死亡人员都可以后续修改,因此此处只填写户主姓名,户口在本地,不在本地,总人数,电话等信息。新建了数组用于储存这些信息。储存方式是直接从EXCEL来的。
5录入户主姓名底册
先贴一个按键精灵工作界面。
电脑版小程序直接放左上角。按键精灵在中间,右下角放微信文件传输。用于远程消息报送,粘贴文本信息,远程控制停止启动,远程报送bug等。
下面不多bb直接贴按键精灵代码。
Rem Start1
//程序从此处开始。
i = 0
//程序开始的数组下标
k = 1.75
//k屏幕乘倍数,我屏幕开的是1.75倍放大,华为2K屏,所以所有使用抓抓抓到的像素点都要×1.75
Rem Start
//rem start是后续起始位置
//Goto kkk
//Goto ooo
MoveTo 237 * k, 686 * k
//准备点击新增
Delay 1000
IfColor 237 * k, 686 * k, “F36328”, 0 Then
TracePrint “点击新增,此处正常”
Delay 200
LeftClick 1
Delay 500
LeftClick 1
Delay 200
LeftClick 1
Delay 100
//多次点击新增防止卡顿
Else
TracePrint “此处不正常,退出”
GetColor = GetPixelColor(237 * k, 686 * k)
TracePrint GetColor
EndScript
//新增位置中颜色不对应,退出脚本
End If
Delay i70+15500
//此处是点击新增后需要等待的时间,录入的人数与延迟成近似线性关系,15.5秒是一个大概的保护性延迟。
//i70的70也含有保护性成分。就是防止这个界面刷不出来。
MoveTo 124 * k, 436 * k
LeftClick 1
Delay 200
LeftClick 1
Delay 200
Zhufangdanyuan = A(i)
TracePrint Zhufangdanyuan
//SayString Zhufangdanyuan
//输入住房单元
//住房单元有汉字时不能正常输入,需要先拷贝到微信中在拷贝回来,如开头工作图所示。
MoveTo 1018 * k, 687 * k
LeftClick 1
//TracePrint Zhufangdanyuan
SayString Zhufangdanyuan
KeyDown “Ctrl”, 1
KeyDown “A”, 1
Delay 200
KeyUp “A”, 1
KeyUp “Ctrl”, 1
KeyDown “Ctrl”, 1
KeyDown “C”, 1
Delay 200
KeyUp “C”, 1
KeyUp “Ctrl”, 1
Delay 100
KeyPress “Enter”, 1
MoveTo 124 * k, 436 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
KeyDown “Ctrl”, 1
KeyDown “V”, 1
Delay 200
KeyUp “V”, 1
KeyUp “Ctrl”, 1
Delay 500
Delay 200
//上面一段是把信息从按键精灵拷到微信再拷回来。
MoveTo 291 * k, 545 * k
Delay 200
LeftClick 1
Delay 300
//点击确认新增
MoveTo 156 * k, 311 * k
Delay 300
MouseWheel -10
//滚动,防止异常
Delay 1500
MouseWheel -20
//滚动,防止异常
Delay 700
IfColor 237 * k, 686 * k, “F36328”, 0 Then
//此处判断顶部蓝色
MoveTo 363 * k, 589 * k
LeftClick 1
Else
TracePrint “异常”
EndScript
End If
Delay 390
MoveTo 347 * k, 541 * k
Delay 300
IfColor 347 * k, 541 * k, “EBEBEB”, 0 Then
//判断录入户主姓名底册的灰色。
MoveTo 347 * k, 541 * k
LeftClick 1
//点击录入户主姓名底册
Else
TracePrint “异常”
EndScript
End If
Delay 1400
GetColor = GetPixelColor(246k,108k)
TracePrint GetColor
//取色,这个颜色有的时候会不一样,很烦,现场调一下吧
MoveTo 246k,108k
Delay 500
IfColor 246k,58k , “F36328”, 0 Then
MoveTo 210 * k, 265 * k
Delay 200
LeftClick 1
//点击户主姓名底册类型
Else
TracePrint “异常”
EndScript
End If
Delay 500
MoveTo 309 * k, 537 * k
Delay 200
IfColor 309 * k, 537 * k , “EBEBEB”, 0 Then
MoveTo 309 * k, 537 * k
Delay 200
LeftClick 1
//点击住户
Else
TracePrint “异常”
EndScript
End If
Delay 500
MoveTo 149 * k, 346 * k
Delay 200
MouseWheel 20
//正数表示向上滚动
Delay 1300
MoveTo 170 * k, 326 * k
MouseWheel -3
//在录入页滚动来初始化
LeftClick 1
Delay 200
LeftClick 1
Delay 1300
MoveTo 1018 * k, 687 * k
LeftClick 1
TextName = mName(i)
TracePrint TextName
SayString TextName
//这里在输入姓名,同样,由于是汉字没法直接用,需要拷微信再拷回来。
KeyDown “Ctrl”, 1
KeyDown “A”, 1
Delay 200
KeyUp “A”, 1
KeyUp “Ctrl”, 1
KeyDown “Ctrl”, 1
KeyDown “C”, 1
Delay 200
KeyUp “C”, 1
KeyUp “Ctrl”, 1
Delay 100
KeyPress “Enter”, 1
MoveTo 47 * k, 323 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
KeyDown “Ctrl”, 1
KeyDown “V”, 1
Delay 200
KeyUp “V”, 1
KeyUp “Ctrl”, 1
Delay 500
SumNum = mSum(i)
If SumNum = “1” Then
MoveTo 139 * k, 537 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
If SumNum = “2” Then
MoveTo 251 * k, 537 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
If SumNum = “3” Then
MoveTo 332 * k, 537 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
TracePrint “总人数”+SumNum
//M5总人数
Delay 200
Rem kkk
MoveTo 311 * k, 396 * k
LeftClick 1
Delay 200
MoveTo 315 * k, 390 * k
MouseWheel - 3
//即将开始写本村人数和其他人数
TextHere = inHere(i)
TextNotHere = notHere(i)
If TextHere = “0” Then
MoveTo 88 * k, 191 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
If TextHere = “1” Then
MoveTo 167 * k, 191 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
If TextHere = “2” Then
MoveTo 251 * k, 193 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
If TextHere = “3” Then
MoveTo 342 * k, 191 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
//M6本村人数
If TextNotHere = “0” Then
MoveTo 88 * k, 445 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
If TextNotHere = “1” Then
MoveTo 167 * k, 445 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
If TextNotHere = “2” Then
MoveTo 251 * k, 445 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
If TextNotHere = “3” Then
MoveTo 342 * k, 445 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
//M7其他人数
Delay 300
MoveTo 231 * k, 309 * k
Delay 100
LeftClick 1
Delay 100
MoveTo 230 * k, 319 * k
Delay 100
MouseWheel - 1
Delay 600
TextUnSure = unSure(i)
If TextUnSure = “0” Then
MoveTo 88 * k, 477 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
If TextUnSure = “1” Then
MoveTo 167 * k, 477 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
If TextUnSure = “2” Then
MoveTo 251 * k, 477 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
If TextUnSure = “3” Then
MoveTo 342 * k, 477 * k
Delay 100
LeftClick 1
Delay 200
LeftClick 1
End If
//M8待定人数
MoveTo 344 * k, 368 * k
Delay 100
LeftClick 1
Delay 100
MoveTo 230 * k, 319 * k
//Delay 100
MouseWheel - 1
Delay 700
MoveTo 75 * k, 518 * k
//Delay 100
LeftClick 1
Delay 100
LeftClick 1
//此处点击M9未居住在本户
//Delay 1000
MoveTo 344 * k, 368 * k
//Delay 100
LeftClick 1
Delay 100
MoveTo 230 * k, 319 * k
Delay 100
MouseWheel - 1
Delay 700
MoveTo 86 * k, 589 * k
//Delay 100
LeftClick 1
Delay 100
LeftClick 1
//此处单击了其他普查小区人数
MoveTo 344 * k, 451 * k
//Delay 100
LeftClick 1
Delay 100
MoveTo 230 * k, 451 * k
//Delay 100
MouseWheel - 2
//
Delay 700
MoveTo 68 * k, 439 * k
Delay 100
LeftClick 1
Delay 100
LeftClick 1
//本村居委会以外人数
MoveTo 280 * k, 304 * k
//Delay 100
LeftClick 1
Delay 100
MoveTo 281 * k, 314 * k
//Delay 100
MouseWheel - 1
//
Delay 700
MoveTo 68 * k, 493 * k
//Delay 100
LeftClick 1
Delay 100
LeftClick 1
//出生人数
MoveTo 318 * k, 362 * k
//Delay 100
LeftClick 1
Delay 100
MoveTo 281 * k, 314 * k
//Delay 100
MouseWheel - 1
//
Delay 800
MoveTo 68 * k, 546 * k
//Delay 100
LeftClick 1
Delay 100
LeftClick 1
//死亡人数
MoveTo 383 * k, 418 * k
//Delay 100
LeftClick 1
//Delay 100
MoveTo 281 * k, 546 * k
Delay 100
MouseWheel - 1
//
Delay 900
MoveTo 68 * k, 575 * k
//Delay 100
LeftClick 1
Delay 100
LeftClick 1
//死亡人数后面一栏是啥我忘了。
MoveTo 331 * k, 475 * k
//Delay 100
LeftClick 1
Delay 100
MoveTo 281 * k, 546 * k
Delay 100
MouseWheel - 2
///
Delay 700
MoveTo 91 * k, 398 * k
//Delay 100
LeftClick 1
Delay 100
LeftClick 1
Textnumber = phoneNum(i)
TracePrint Textnumber
SayString Textnumber
//输入电话号
///
Delay 700
MoveTo 405 * k, 482 * k
Delay 100
LeftClick 1
Delay 100
MoveTo 281 * k, 546 * k
Delay 100
MouseWheel - 1
//滚动移动位置
///
Delay 700
MoveTo 251 * k, 579 * k
Delay 100
LeftClick 1
Delay 100
//点击是否自主填报
Delay 900
MoveTo 325 * k, 657 * k
Delay 100
LeftClick 1
Delay 700
//审核
MoveTo 231 * k, 685 * k
Delay 300
LeftClick 1
Delay 1600
MoveTo 299 * k, 441 * k
Delay 200
LeftClick 1
Delay 2100
MoveTo 214 * k, 444 * k
LeftClick 1
Delay 1200
//点击确认
///
//点击确认二维码
MoveTo 302 * k, 455 * k
Delay 1700
LeftClick 1
Delay 2300
MoveTo 255 * k, 355 * k
LeftClick 1
Delay 100
MouseWheel -1
Delay 200
MouseWheel -1
Delay 200
MouseWheel 1
//
Delay 1900
//Rem ooo
//截屏函数
TextName = mName(i)
Zhufangdanyuan = A(i)
Goto waitcc
Rem waitcc
TracePrint “判断颜色”
MoveTo 262 * k, 266 * k
Delay 200
GetColor = GetPixelColor(262 * k, 266 * k)
TracePrint GetColor
IfColor 262 * k, 266 * k , “60C107”, 0 Then
TracePrint “保存”
Delay 200
Goto picture
//点击住户
Else
Delay 200
TracePrint “等待”
Goto waitcc
//写个循环,等待小程序码刷新
//EndScript
End If
Rem picture
//这里是存小程序码
Path = “D:\你新建一个文件夹” + Zhufangdanyuan + TextName + “.bmp”
TracePrint Path
Call Plugin.Pic.PrintScreen(0, 0, 415k, 733k,Path)
Delay 1200
//完成第一个
i = i + 1
If i = 17 Then
EndScript
End If
MoveTo 25 * k, 35 * k
Delay 200
LeftClick 1
Delay 200
LeftClick 1
MoveTo 207 * k, 380 * k
Delay 200
MouseWheel - 10
Delay 1000
Goto Start
程序就是这么多,对照小程序界面不难做出来。不出意外的话所有点和颜色都需要重新抓。
另外程序中没有体现网络容错之类的,有需要的朋友可以自己填上。
写于2020 10 16 下午