https://blog.csdn.net/weixin_43952492/article/details/109115287
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
//点击户主姓名底册类型
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 下午