第七次人口普查按键精灵批量录入户主底册开源工程

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 下午

发表新评论