易语言实现截图或右键二维码识别的代码

DLL命令表

.版本 2
.DLL命令 DecodePictureFile, 整数型, "PsyQrDcd", "DecodePictureFile"
  .参数 strFilePath, 文本型
.DLL命令 DecodePictureFileRect, 整数型, "PsyQrDcd", "DecodePictureFileRect"
  .参数 strFilePath, 文本型
  .参数 lngLeftX, 整数型
  .参数 lngTopY, 整数型
  .参数 lngRightX, 整数型
  .参数 lngBottomY, 整数型
.DLL命令 DecodeGrayScaleArray, 整数型, "PsyQrDcd", "DecodeGrayScaleArray"
  .参数 byData, 字节型, 传址
  .参数 lngWidth, 整数型
  .参数 lngHeight, 整数型
.DLL命令 DecodeBinaryArray, 整数型, "PsyQrDcd", "DecodeBinaryArray"
  .参数 byData, 字节型, 传址
  .参数 lngWidth, 整数型
  .参数 lngHeight, 整数型
.DLL命令 GetDecodeDataString, 文本型, "PsyQrDcd", "GetDecodeDataString"
  .参数 lngIndex, 整数型
.DLL命令 GetDecodeDataByteArray, 整数型, "PsyQrDcd", "GetDecodeDataByteArray"
  .参数 lngIndex, 整数型
.DLL命令 GetDecodeVersion, 整数型, "PsyQrDcd", "GetDecodeVersion"
  .参数 lngIndex, 整数型
.DLL命令 GetDecodeLevel, 整数型, "PsyQrDcd", "GetDecodeLevel"
  .参数 lngIndex, 整数型
.DLL命令 GetDecodeMaskingNo, 整数型, "PsyQrDcd", "GetDecodeMaskingNo"
  .参数 lngIndex, 整数型
.DLL命令 GetConcatenationInfo, 整数型, "PsyQrDcd", "GetConcatenationInfo"
  .参数 lngIndex, 整数型
  .参数 lngSeqNo, 整数型, 传址
  .参数 byCheckDigit, 字节型, 传址
.DLL命令 GetSymbolePosition, 整数型, "PsyQrDcd", "GetSymbolePosition"
  .参数 lngIndex, 整数型
  .参数 lngPosition, 整数型, 传址
.DLL命令 SetDecodeSymbolCount, , "PsyQrDcd", "SetDecodeSymbolCount"
  .参数 lngCount, 整数型
.DLL命令 SetDecodeEffectLevel, , "PsyQrDcd", "SetDecodeEffectLevel"
  .参数 lngLevel, 整数型
.DLL命令 SetBrightnessBorder, , "PsyQrDcd", "SetBrightnessBorder"
  .参数 byBorder, 字节型
.DLL命令 SetMinimumModuleSize, , "PsyQrDcd", "SetMinimumModuleSize"
  .参数 bySize, 字节型
.DLL命令 FreeAllocateMemory, , "PsyQrDcd", "FreeAllocateMemory"
.DLL命令 API_MultiByteToWideChar_utf8, 整数型, , "MultiByteToWideChar"
  .参数 CodePage, 整数型
  .参数 dwFlags, 整数型
  .参数 lpMultiByteStr, 字节集
  .参数 cchMultiByte, 整数型
  .参数 lpWideCharStr, 字节集
  .参数 cchWideChar, 整数型
.DLL命令 API_WideCharToMultiByte_utf8, 整数型, "kernel32", "WideCharToMultiByte", , 将通配符映像为多字节
  .参数 CodePage, 整数型
  .参数 dwFlags, 整数型
  .参数 lpWideCharStr, 字节集
  .参数 cchWideChar, 整数型
  .参数 lpMultiByteStr, 字节集
  .参数 cchMultiByte, 整数型
  .参数 lpDefaultChar, 整数型
  .参数 lpUsedDefaultChar, 整数型
.DLL命令 API_WideCharToMultiByte, 整数型, "kernel32", "WideCharToMultiByte", , 将通配符映像为多字节
  .参数 CodePage, 整数型
  .参数 dwFlags, 整数型
  .参数 lpWideCharStr, 字节集
  .参数 cchWideChar, 整数型
  .参数 lpMultiByteStr, 文本型
  .参数 cchMultiByte, 整数型
  .参数 lpDefaultChar, 文本型
  .参数 lpUsedDefaultChar, 整数型
.DLL命令 CreateWaitableTimerA, 整数型, , "CreateWaitableTimerA", 公开, CreateWaitableTimerA 程序延时
  .参数 lpTimerAttributes, 整数型
  .参数 bManualReset, 逻辑型
  .参数 lpTimerName, 整数型
.DLL命令 SetWaitableTimer, 整数型, , "SetWaitableTimer", 公开, SetWaitableTimer
  .参数 hTimer, 整数型
  .参数 pDueTime, 程序延时
  .参数 lPeriod, 整数型
  .参数 pfnCompletionRoutine, 整数型
  .参数 lpArgToCompletionRoutine, 整数型
  .参数 fResume, 逻辑型
.DLL命令 MsgWaitForMultipleObjects, 整数型, , "MsgWaitForMultipleObjects", 公开, MsgWaitForMultipleObjects
  .参数 nCount, 整数型
  .参数 pHandles, 整数型, 传址
  .参数 fWaitAll, 逻辑型
  .参数 dwMilliseconds, 整数型
  .参数 dwWakeMask, 整数型
.DLL命令 CloseHandle, 逻辑型, "kernel32", "CloseHandle", 公开, CloseHandle关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的 非零表示成功,零表示失败。会设置GetLastError
  .参数 对象句柄, 整数型, , 欲关闭的一个对象的句柄;
.DLL命令 GetInputState, 整数型, "user32", "GetInputState", 公开, 用法,如果真(我的处理事件()≠0),处理事件()  比系统自带的"处理事件"比3倍以上

自定义数据类型

.版本 2
.数据类型 程序延时
  .成员 成员_时间, 长整数型, , , 占用8个字节

全局变量表

.版本 2
.支持库 BmpOperate
.全局变量 a, 字节集
.全局变量 x
.全局变量 y
.全局变量 s, 逻辑型
.全局变量 动画物体1
.全局变量 动画物体2
.全局变量 w, 位图
.全局变量 w1, 位图
.全局变量 解码结果, 文本型

常量数据表

.版本 2
.常量 QRD_ERROR_SYMBLE_NOT_FOUND, "0"
.常量 QRD_ERROR_FILE_NOT_FOUND, "-1"
.常量 QRD_ERROR_READ_FAULT, "-2"
.常量 QRD_ERROR_BAD_FORMAT, "-3"
.常量 QRD_ERROR_SHARING_VIOLATION, "-4"
.常量 QRD_ERROR_NOT_ENOUGH_MEMORY, "-5"
.常量 常量1
.常量 常量2, "“"C:\Users\Administrator\Desktop\二维码读取\qrcode.exe" "%1"”"

截图程序集的代码

.版本 2
.支持库 iext2
.支持库 BmpOperate
.支持库 exui
.程序集 截图窗口程序集
.子程序 _截图窗口_创建完毕
截图动画物体.趋向色 = #灰色
截图动画物体.趋向程度 = 50
动画物体1 = 背景动画框.创建物体 (截图动画物体, 0, 0, 真, )
动画物体2 = 背景动画框.创建物体 (动画物体2, 0, 0, 真, )
a = 快照 (, , )
背景动画框.置图片 (动画物体1, a, )
w.载入数据 (a)
截图窗口.移动 (0, 0, 取屏幕宽度 (), 取屏幕高度 ())
背景动画框.移动 (0, 0, 截图窗口.宽度, 截图窗口.高度)
截图窗口.可视 = 真
.子程序 _背景动画框_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
s = 真
x = 横向位置
y = 纵向位置
.子程序 _背景动画框_鼠标左键被放开, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
s = 假
.如果真 (写到文件 (取运行目录 () + “\2wm.bmp”, w1.取位图数据 ()))
  截图窗口.可视 = 假
  解码结果 = 解码 (取运行目录 () + “\2wm.bmp”)
  _启动窗口.主窗口.可视EX = 真
  _启动窗口.激活 ()
  显示信息 (解码结果)
.如果真结束
销毁 ()
.子程序 _背景动画框_鼠标位置被移动, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
.局部变量 x1
.局部变量 y1
.局部变量 c, 整数型
.如果真 (s)
  x1 = 横向位置 - x
  y1 = 纵向位置 - y
  .如果真 (x1 < 1)
    x1 = 0
  .如果真结束
  .如果真 (y1 < 1)
    y1 = 0
  .如果真结束
  w1.创建 (x1, y1, 24, #白色)
  w.复制到 (x, y, x1, y1, w1, 0, 0, )
  .计次循环首 (x1, c)
    w1.置某点颜色 (c, 0, #红色)
    w1.置某点颜色 (c, y1 - 1, #红色)
  .计次循环尾 ()
  .计次循环首 (y1, c)
    w1.置某点颜色 (0, c, #红色)
    w1.置某点颜色 (x1 - 1, c, #红色)
  .计次循环尾 ()
  背景动画框.置物体位置 (动画物体2, x, y, )
  背景动画框.置图片 (动画物体2, w1.取位图数据 (), )
.如果真结束

解码程序集的代码

.版本 2
.支持库 spec
.程序集 解码程序集
.程序集变量 lngRectLeft, 整数型
.程序集变量 lngRectTop, 整数型
.程序集变量 lngRectRight, 整数型
.程序集变量 lngRectBottom, 整数型
.程序集变量 blnEnableSetRect, 逻辑型
.子程序 解码, 文本型
.参数 strFilePath, 文本型
.局部变量 intOldPointer, 整数型
.局部变量 lngResult, 整数型
.局部变量 strResult, 文本型
.局部变量 i, 整数型
.局部变量 lngCount, 整数型
.局部变量 lngSeqNo, 整数型
.局部变量 byCheckDigit, 字节型
.局部变量 lngPosition, 整数型, , "8"
.如果 (blnEnableSetRect)
  lngResult = DecodePictureFileRect (strFilePath, lngRectLeft, lngRectTop, lngRectRight, lngRectBottom)
.否则
  lngResult = DecodePictureFile (strFilePath)
.如果结束
.如果 (lngResult ≥ 1)
  .变量循环首 (0, lngResult - 1, 1, i)
    strResult = strResult + “——————————————————————” + #换行符
    strResult = strResult + “已解码数据 ” + 到文本 (i + 1)
    strResult = strResult + “ [模型版本: ” + 到文本 (GetDecodeVersion (i))
    strResult = strResult + “, 等级: ”
    .判断开始 (GetDecodeLevel (i) = 0)
      strResult = strResult + “L(7%)”
    .判断 (GetDecodeLevel (i) = 1)
      strResult = strResult + “M(15%)”
    .判断 (GetDecodeLevel (i) = 2)
      strResult = strResult + “Q(25%)”
    .判断 (GetDecodeLevel (i) = 3)
      strResult = strResult + “H(30%)”
    .默认
    .判断结束
    lngCount = GetConcatenationInfo (i, lngSeqNo, byCheckDigit)
    .如果真 (lngCount > 0)
      strResult = strResult + “, 综合:” + 到文本 (lngSeqNo + 1) + “/” + 到文本 (lngCount)
      strResult = strResult + “(CD” + 取十六进制文本 (byCheckDigit \ 16) + 取十六进制文本 (byCheckDigit % 16) + “H)”
    .如果真结束
    strResult = strResult + “]” + #换行符
    strResult = strResult + “——————————————————————” + #换行符
    调试输出 (UTF8_转_ANSI (到字节集 (GetDecodeDataString (i))))
    strResult = strResult + UTF8_转_ANSI (到字节集 (GetDecodeDataString (i))) + #换行符 + #换行符
    lngResult = GetSymbolePosition (i, lngPosition [1])
    strResult = strResult + “符号位置:” + “(” + 到文本 (lngPosition [1]) + “, ” + 到文本 (lngPosition [2]) + “)-” + “(” + 到文本 (lngPosition [3]) + “, ” + 到文本 (lngPosition [4]) + “)-” + “(” + 到文本 (lngPosition [5]) + “, ” + 到文本 (lngPosition [6]) + “)-” + “(” + 到文本 (lngPosition [7]) + “, ” + 到文本 (lngPosition [8]) + “)”
    strResult = strResult + #换行符 + #换行符
  .变量循环尾 ()
  FreeAllocateMemory ()
.否则
  .判断开始 (lngResult = #QRD_ERROR_SYMBLE_NOT_FOUND)
    strResult = “未找到 QR 代码符号。”
  .判断 (lngResult = #QRD_ERROR_FILE_NOT_FOUND)
    strResult = “文件未找到!”
  .判断 (lngResult = #QRD_ERROR_READ_FAULT)
    strResult = “读取文件时发生错误。”
  .判断 (lngResult = #QRD_ERROR_BAD_FORMAT)
    strResult = “无法读取此格式文件。”
  .判断 (lngResult = #QRD_ERROR_SHARING_VIOLATION)
    strResult = “共享冲突,无法读取文件。”
  .判断 (lngResult = #QRD_ERROR_NOT_ENOUGH_MEMORY)
    strResult = “内存不足。”
  .默认
  .判断结束
.如果结束
调试输出 (strResult)
返回 (strResult)
.子程序 UTF8_转_ANSI, 文本型, 公开
.参数 utf8字节集, 字节集
返回 (Unicode_转_ANSI (UTF8_转_Unicode (utf8字节集)))
.子程序 UTF8_转_Unicode, 字节集
.参数 utf8字节集, 字节集
.局部变量 len, 整数型, , , 单位: Word
.局部变量 Unicode字节集, 字节集
.局部变量 ll
ll = 取字节集长度 (utf8字节集)
len = API_MultiByteToWideChar_utf8 (65001, 0, utf8字节集, ll, { }, 0)
Unicode字节集 = 取空白字节集 (len × 2)
API_MultiByteToWideChar_utf8 (65001, 0, utf8字节集, ll, Unicode字节集, len × 2)
返回 (Unicode字节集)
.子程序 Unicode_转_ANSI, 文本型
.参数 Unicode字节集, 字节集
.局部变量 ansi_len, 整数型, , , 单位: Word
.局部变量 unicode_len
.局部变量 ansi, 文本型
unicode_len = 取字节集长度 (Unicode字节集) ÷ 2
ansi_len = API_WideCharToMultiByte (936, 0, Unicode字节集, unicode_len, ansi, 0, “”, 0)
ansi = 取空白文本 (ansi_len)
API_WideCharToMultiByte (936, 0, Unicode字节集, unicode_len, ansi, ansi_len, “”, 0)
返回 (ansi)
.子程序 程序延时, 逻辑型, , 不占用cpu,窗口不卡死,不影响其它代码执行
.参数 参_延时间隔, 整数型, 可空, 1000毫秒 = 1秒 留空为无限等待
.参数 参_延时单位, 整数型, 可空, 默认为毫秒 0=毫秒 1=秒 2=分钟 3=小时
.局部变量 局_时间句柄, 整数型
.局部变量 局_时间, 程序延时
.判断开始 (参_延时单位 = 0 且 是否为空 (参_延时间隔))
  参_延时间隔 = 5000 × 60 × 60
  参_延时单位 = 5000 × 60 × 60
.判断 (参_延时单位 = 0)
  参_延时单位 = 1
.判断 (参_延时单位 = 1)
  参_延时单位 = 1000
.判断 (参_延时单位 = 2)
  参_延时单位 = 1000 × 60
.判断 (参_延时单位 = 3)
  参_延时单位 = 1000 × 60 × 60
.默认
.判断结束
局_时间.成员_时间 = -10 × 参_延时间隔 × 1000 × 参_延时单位
局_时间句柄 = CreateWaitableTimerA (0, 假, 0)
SetWaitableTimer (局_时间句柄, 局_时间, 0, 0, 0, 假)
.判断循环首 (MsgWaitForMultipleObjects (1, 局_时间句柄, 假, -1, 255) ≠ 0)
  系统处理事件 ()
.判断循环尾 ()
CloseHandle (局_时间句柄)
返回 (真)
.子程序 系统处理事件
.如果真 (GetInputState () ≠ 0)
  处理事件 ()
.如果真结束

二维码识别的代码

.版本 2
.支持库 exui
.支持库 iext2
.程序集 启动窗口程序集
.程序集变量 命令行, 文本型, , "0"
.子程序 __启动窗口_创建完毕
.局部变量 path, 文本型
path = 取运行目录 () + “\PsyQrDcd.dll”
.如果真 (文件是否存在 (path) = 假)
  写到文件 (path, #PsyQrDcd)
.如果真结束
取命令行 (命令行)
.如果真 (取数组成员数 (命令行) > 0)
  解码结果 = 解码 (命令行 [1])
  显示信息 (解码结果)
.如果真结束
初始化注册右键按钮 ()
.子程序 _截图识别按钮_左键单击
主窗口.可视EX = 假
.如果真 (是否已创建 (截图窗口) = 假)
  载入 (截图窗口, , 假)
.如果真结束
截图窗口.背景动画框.置物体位置 (动画物体2, -2000, -2000, )
.子程序 _注册右键按钮_左键单击
.如果 (注册项是否存在 (#根类, “*\shell\QRCode\command\”))
  删除注册项 (#根类, “*\shell\QRCode\command”)
  删除注册项 (#根类, “*\shell\QRCode”)
.否则
  .如果 (写注册项 (#根类, “*\shell\QRCode\”, “识别二维码”) 且 写注册项 (#根类, “*\shell\QRCode\command\”, 取运行目录 () + “\” + 取执行文件名 () + “ %1”))
    显示信息 (“注册成功”)
  .否则
    显示信息 (“注册失败”)
    删除注册项 (#根类, “*\shell\QRCode\command”)
    删除注册项 (#根类, “*\shell\QRCode”)
  .如果结束
.如果结束
初始化注册右键按钮 ()
.子程序 显示信息
.参数 信息, 文本型
.参数 是否复制, 逻辑型, 可空
信息框EX (主窗口.图标, “解码结果 - 已复制到剪辑版”, , 信息, , { “确认” }, 0, 取窗口句柄 (), , , 5000, , )
.如果真 (是否复制)
  置剪辑板文本 (解码结果)
.如果真结束
.子程序 __启动窗口_将被销毁
主窗口.销毁 ()
.子程序 初始化注册右键按钮
.如果 (注册项是否存在 (#根类, “*\shell\QRCode\command\”))
  注册右键按钮.标题 = “注销右键”
.否则
  注册右键按钮.标题 = “注册右键”
.如果结束

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 易语言二维码生成器制作教学

    二维码的使用度和普及度相当的高,无论是在广告推送.网站跳转.信息获取,还是在手机支付都在应用,网页的上生成二维码就见不少,现在用易语言来来看怎样制作二维码生成器,当然这里也是调用API接口,所以难度不大! 1.百度搜索一下二维码开入平台,选择一个开放.免费的可以调用的接入就可以了,这里就以排名第一的作为演示例子! 2.进来后,就可以看到这里有详细的说明,做过API调用都知道,方法都大同小异异,看看他的使用说明和例子就能理解! 3.回到易语言操作界面,简单做一下界面,图片预览用的是图片框,颜色选择

  • 易语言制作二维码生成器

    DLL命令表 .版本 2 .DLL命令 二维码_外形设置, , "QRCodeWin32.dll", "QRAppearance" .参数 模块尺寸, 双精度小数型 .参数 方向, 整数型 .参数 边框, 整数型 .DLL命令 二维码_编码参数, , "QRCodeWin32.dll", "QRConfigure" .参数 版本, 整数型 .参数 纠错级别, 整数型 .参数 掩膜, 整数型 .DLL命令 二维码_默认设置, ,

  • 易语言实现截图或右键二维码识别的代码

    DLL命令表 .版本 2 .DLL命令 DecodePictureFile, 整数型, "PsyQrDcd", "DecodePictureFile" .参数 strFilePath, 文本型 .DLL命令 DecodePictureFileRect, 整数型, "PsyQrDcd", "DecodePictureFileRect" .参数 strFilePath, 文本型 .参数 lngLeftX, 整数型 .参数 lngT

  • Android利用ZXing扫描二维码的实例代码解析

    相关阅读: Android开发框架之自定义ZXing二维码扫描界面并解决取景框拉伸问题 此项目源码地址:请点击这里 看一下zxing的项目结构,我这里直接拿过来用的 看一下扫码的activity: package com.fanyafeng.barcode.activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle

  • iOS二维码的生成代码

    本文实例为大家分享了iOS二维码的生成代码,供大家参考,具体内容如下 一.工程图. 二.代码. ViewController.m #import "ViewController.h" #import "ScanViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // D

  • Android 点击生成二维码功能实现代码

    先看效果: 输入内容,点击生成二维码: 点击logo图案: 代码: QRCodeUtil: package com.example.administrator.zxing; import android.graphics.Bitmap; import android.graphics.Canvas; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zx

  • 微信小程序动态生成二维码的实现代码

    效果图如下: 实现 wxml <!-- 存放二维码的图片--> <view class='container'> <image bindtap="previewImg" mode="scaleToFill" src="{{imagePath}}"></image> </view> <!-- 画布,用来画二维码,只用来站位,不用来显示--> <view class=&qu

  • node 解析图片二维码的内容代码实例

    这篇文章主要介绍了node 解析图片二维码的内容代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 const {readFile, readFileSync} = require('fs'); const decodeImage = require('jimp').read; const qrcodeReader = require('qrcode-reader'); const path = require("path");

  • Android ZxingPlus精简的二维码框架示例代码

    这个二维码框架不仅使用的代码少,而且可以生成带图片的二维码,而且二维码扫描界面也是先做好的,也比较好看.我们所需要做的就是在扫描二维码后得到的数据对其进行操作. 使用方法 添加依赖 compile 'com.singleshu:ZxingPlus:1.1.4' 代码 public class MainActivity extends AppCompatActivity { TextView test; ImageView imageView; @Override protected void o

  • C# 根据字符串生成二维码的实例代码

    1.先下载NuGet包(ZXing.Net) 2.新建控制器及编写后台代码 using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Web; using System.Web.Mvc; using ZXing; using ZXing.QrCode; nam

  • Java生成中间logo的二维码的示例代码

    最近有负责微信开发,对于微信开发的项目,肯定少不了二维码啦,正好有个这样的需求,这对不同的商品生成一个二维码,扫码即刻下单.博主就弄了一个二维码生成的工具类. 弄出来之后,产品经理又说了,中间放上公司的logo是不是好一点?加上吧, 加上公司logo之后,产品经理想了想,每个商品都有个二维码,销售人员有很多个商品二维码,群发给用户,在qq群上,微信群上,怎么知道哪个二维码对应哪个商品的呢?于是决定要加上商品名称.最后商品二维码就成了下面这个模样了(当然啦,这里面的logo并不是博主现职公司的).

  • three.js 制作动态二维码的示例代码

    今天郭先生说一下用canvas解析图片流,然后制作一个动态二维码的小案例,话不多说先上图,这是郭先生的微信二维码哦! 1. 解析图片流 canvas = document.createElement('canvas');//创建canvas画布 content = canvas.getContext('2d');//获取画布的上下文 canvas.width = 310;//设置尺寸 canvas.height = 310; img = new Image();//创建一张图片 img.src

随机推荐