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

10/18 07:18
阅读数 1.1K

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秒是一个大概的保护性延迟。
//i

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

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部