找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7396|回复: 10

[教程源码] PC端本地过滑动验证源码(上)

[复制链接]

3

主题

6

回帖

12

积分

按键电脑班学员

鲜花
0
猫粮
112
QQ
发表于 2018-1-28 07:57:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 2133 于 2018-1-31 13:07 编辑

通过1311师兄的思路,写了这个过滑动验证脚本,经过测试,成功写入(操作)后,可以过滑动验证。代码肯定有不足的地方,希望老师和同学们指正。
由于代码过长,分为上下部分发帖。上部分为写入颜色到数据库,以下两个函数不能在一个脚本里一起运行,我也不明原因。懒人数据库插件只能对打开数据库的一个表进行操作,其他表打开了不能操作,就算加入了关闭数据表命令也不行,必须脚本运行停止后才能继续另一个函数操作。
[按键精灵] 纯文本查看 复制代码
Dim DBpath
DBpath = "C:\滑动数据库测试6.mdb"

Call WriteBackPic("沙漠", 100, 100, 10)
'根据不同的滑块,设置间距,间距x或间距y要有一个为1,后面获取数据才会精确
Call WriteColor("沙漠", 100, 100, 120, 180, 1, 40) 
Function WriteBackPic(图片名,起点x,起点y,取点个数)   '写入背景图身份特征,取点为图片不会变化的地方
    Dim DBIndex,arr,TBIndex,Data,SqlStr,i,Value
    DBIndex = Plugin.LazyOffice.AccDBOpen(DBpath)  '打开一个数据库文件,没有此数据库则新建一个      
    arr = Plugin.LazyOffice.AccListTBs(DBIndex)
    If InStr(Join(arr, ","), "集合表") = 0 Then 
        '创建一个表名(集合表),字段名"ID",字段名"picdatas",字段名"TPName",并设置各字段属性
        SqlStr = "Create TABLE [集合表]([ID]  COUNTER NOT NULL, [picdatas] char,[TPName] char)"
        TracePrint Plugin.LazyOffice.AccDBRun(SqlStr,DBIndex)
    End If
    TBIndex = Plugin.LazyOffice.AccTBOpen("集合表", DBIndex,"*","")   '打开表名("集合表")的数据表
    For i = 起点x To 起点x + 取点个数 - 1
        If Data = "" Then 
            Data = i & "," & 起点y & "|" & GetPixelColor(i, 起点y)
        Else 
            Data = Data & "," & i & "," & 起点y & "|" & GetPixelColor(i, 起点y)
        End If
    Next
        Value = Plugin.LazyOffice.AccTBGetPosi(TBindex, DBindex)
        Value = Plugin.LazyOffice.AccTBMovePosi("Last", TBindex, DBindex)
        Value = Plugin.LazyOffice.AccTBAddRecord(TBindex, DBindex)
    arr = Array("",Data,图片名)
    Value = Plugin.LazyOffice.AccTBSetValueArrR(arr, TBindex, DBindex)   '修改数据表当前行所有数据
    If Value > 0 Then 
        TracePrint "写入成功"
    Else 
        TracePrint "写入失败"
    End If
    Call 关闭数据库(DBIndex,TBindex)
End Function
Function WriteColor(图片名, 起点x, 起点y, 终点x, 终点y, x间距, y间距)  '写入图片颜色到数据库(在没有滑块挡住的部分)
    Dim DBIndex,arr,TBIndex
    DBIndex = Plugin.LazyOffice.AccDBOpen(DBpath)      	'打开一个数据库文件,没有此数据库则新建一个
    arr = Plugin.LazyOffice.AccListTBs(DBIndex)
    If InStr(Join(arr, ","), 图片名) = 0 Then 
        '创建一个表名(图片名),字段名"ID",字段名"picdata",并设置各字段属性
        SqlStr = "Create TABLE ["& 图片名 &"]([ID]  COUNTER NOT NULL, [picdata] char)"
        TracePrint Plugin.LazyOffice.AccDBRun(SqlStr,DBIndex)
    End If
    TBIndex = Plugin.LazyOffice.AccTBOpen(图片名, DBIndex,"picdata","")   '打开表名(图片名)的数据表
    TracePrint TBIndex
    For y = 起点y To 终点y Step y间距
        For x = 起点x To 终点x Step x间距
            Value = Plugin.LazyOffice.AccTBGetPosi(TBindex, DBindex)
            Value = Plugin.LazyOffice.AccTBMovePosi("Last", TBindex, DBindex)
            Value = Plugin.LazyOffice.AccTBAddRecord(TBindex, DBindex)    '数据表增加一行数据
            arr = Array(x & "," & y & "|" & GetPixelColor(x, y))
            Value = Plugin.LazyOffice.AccTBSetValueArrR(arr, TBindex, DBindex)  '修改数据表当前行所有数据
        Next
    Next
    If Value > 0 Then 
        TracePrint "写入成功"
    Else 
        TracePrint "写入失败"
    End If
    Call 关闭数据库(DBIndex,TBindex)
End Function
Sub 关闭数据库(DBIndex,TBindex)
    Call Plugin.LazyOffice.AccDBClose(DBIndex)
    Call Plugin.LazyOffice.AccTBClose(TBindex, DBIndex)
End Sub
数据库4.png
数据库1.png
数据库2.png
数据库3.png
楼主热帖
  • 打卡等级:开宗立派

1087

主题

2141

回帖

4335

积分

院长

鲜花
9
猫粮
7413
QQ
发表于 2018-1-28 17:24:48 | 显示全部楼层
非常不错的帖子, 不过代码你可以美化下, 点击编辑栏里的<>这个按钮, 然后选择电脑版插入代码, 就可以有高亮功能了

3

主题

6

回帖

12

积分

按键电脑班学员

鲜花
0
猫粮
112
QQ
 楼主| 发表于 2018-1-29 08:22:33 | 显示全部楼层
谢谢老师指点,已找到错误的地方,封装函数的时候,把库索引和表索引(DBIndex,TBindex),定义成了局部变量,关闭表和库的子程序参数没传进去,;P;P;P修正如下:
[按键精灵] 纯文本查看 复制代码
Sub 关闭数据库(DBIndex,TBindex)
    Call Plugin.LazyOffice.AccDBClose(DBIndex)
    Call Plugin.LazyOffice.AccTBClose(TBindex, DBIndex)
End Sub
  • 打卡等级:无名新人

0

主题

41

回帖

41

积分

按键电脑&手机班学员

鲜花
0
猫粮
114
QQ
发表于 2018-2-1 10:01:07 | 显示全部楼层
666来学习下

0

主题

2

回帖

2

积分

学前班

鲜花
0
猫粮
3
发表于 2018-3-2 20:04:57 | 显示全部楼层
不错也。。。

0

主题

16

回帖

16

积分

学前班

鲜花
0
猫粮
18
发表于 2023-2-2 12:04:36 | 显示全部楼层
支持,支持,支持,支持
  • 打卡等级:开宗立派

1

主题

39

回帖

41

积分

小学生

鲜花
0
猫粮
5307
发表于 2023-3-4 11:36:47 | 显示全部楼层
感谢分享,研究学习一下
  • 打卡等级:无名新人

0

主题

2

回帖

2

积分

学前班

鲜花
0
猫粮
3
发表于 2023-12-24 15:44:40 | 显示全部楼层
感谢分享
  • 打卡等级:初涉江湖

4

主题

12

回帖

20

积分

学前班

鲜花
0
猫粮
33
发表于 2023-12-27 15:23:38 | 显示全部楼层
非常不错的帖子, 不过代码你可以美化下, 点击编辑栏里的<>这个按钮, 然后选择电脑版插入代码, 就可以有高亮功能了
  • 打卡等级:无名新人

0

主题

7

回帖

7

积分

学前班

鲜花
0
猫粮
3
发表于 2024-3-29 21:12:13 | 显示全部楼层
(^-^)V
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|紫猫编程学园

GMT+8, 2024-11-21 21:55

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表