| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 296 人关注过本帖, 1 人收藏
标题:使用第三方库实现QRCode的识别
取消只看楼主 加入收藏
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:800
专家分:1217
注 册:2021-10-13
结帖率:96.83%
收藏(1)
已结贴  问题点数:20 回复次数:2 
使用第三方库实现QRCode的识别
忘记是不是这个论坛下载的第三方库,搜索库名称倒是没有搜到。

不管了,分享给大家再说,别说我抄袭啊。

短短几句代码就可以实现二维码读取,附代码:
程序代码:
SET PATH TO SYS(2003)+"\netqr"
SET PROCEDURE TO SYS(2003)+"\netqr\netsuite.reg.prg"
m.oNetQR  = createobjects( "NetQR.ZxBarcode" )
?onetqr.readbarcode(GETFILE())


netsuite.reg.prg代码如下:
程序代码:
Clear 

Local lcPath

If _vfp.StartMode = 0 Then 
   m.lcPath = Justpath( _vfp.ActiveProject.Name  )
Else 
   m.lcPath = Justpath( sys(16,0) ) 
Endif    

Set Default To ( m.lcPath )


*新建一个接口类到的VFP,直接从c++的MFC调用,不用Manifest
Procedure Createobjects( ClassName As String , DllPath As String )
          
          If !File("NetQR.dll" ) Then 
                Messagebox("支持库“NetQR.dll”不存在" , 16 )
                Return null
          Endif 
          
          DECLARE Integer SetClrVersion IN clrhost.dll string
          DECLARE Integer ClrCreateInstanceFrom IN clrhost.dll string, string, string@, integer@
          
          Local lnDispHandle ;
                , lcError      ;
                , lnSize          ;
                , loOb

          m.lcError = Space(512)
          m.lnSize  = 0
          SetClrVersion("v4.0.30319")
          m.lnDispHandle = ClrCreateInstanceFrom( Iif( Empty(m.DllPath ) , Fullpath( "NetQR.dll" ) , Fullpath( m.DllPath ) ),  ClassName , @lcError , @lnSize )
          
          *ClassName  注意类名大小写敏感
          If m.lnDispHandle < 1 Then 

             m.lcError =  Alltrim( Strconv( Strconv( m.lcError , 5 ) , 6 )  )
             m.lcError =  strtran( m.lcError , Chr( 0 ) , "" )
               Messagebox( "实例化类:" + m.ClassName +"出错!原因:" +  Chr(13) + m.lcError , 16 )
               Return null
               
          Else 
             m.loOb = SYS(3096, m.lnDispHandle)
                       SYS(3097, m.loOb)
             Return m.loOb
          Endif 
Endproc 


*从VFP释放一个接口类,7.28版修正类的引用强回收会崩溃的原因,因为某些接口的异步线程还正在运行;
不可能马上回收,这类就不回收,这样就造成实际接口没有释放。
Procedure UnCreateobjects()
          DECLARE Integer ClrUnload IN clrhost.dll    
          ClrUnload()
Endproc  

*新建一个接口类到的VFP,需要用Manifest或类注册
Procedure Createobjectf( ClassName As String , Manifest As String )

          Local loActCtx ;
                , loEx     ;
                , loOb
          Try 
                 m.loActCtx = CreateObject("Microsoft.Windows.ActCtx")
                m.loActCtx.Manifest = Iif( Empty( m.Manifest ) , " , m.Manifest  )
                m.loOb = m.loActCtx.Createobject( ClassName  )
          Catch To loEx
          Endtry 
          
          If  Type( "loEx.Message" ) == "C" Then 
                Messagebox( "实例化类:" + m.ClassName +"出错!原因:" +  Chr(13) + m.loEx.Message , 16 )
                Return null 
          Else 
              Return m.loOb
          Endif 

Endproc 


另外还有2个库,请查看附件。
netqr.7z (110.04 KB)
搜索更多相关主题的帖子: 接口 dll PROCEDURE String Return 
6 天前 21:23
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:800
专家分:1217
注 册:2021-10-13
收藏
得分:0 
@iswith,这个算不算
6 天前 21:37
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:800
专家分:1217
注 册:2021-10-13
收藏
得分:0 
也不知道这个库有哪些函数,把我知道另两个函数也发上来,有知道的弟兄们可以补充一下。
1,生成条码(包括二维码)的函数:
参数说明:
m.lcBarCodeString 是需要编码的字符串;
m.lcBarCode 指定按哪个格式编码
程序代码:
m.oNetQR.GenBarCode( m.lcBarCodeString, m.lnWidth, m.lnHeight, m.lnMargin , m.lcBarCode )
*返回值是字符串,可以以bmp文件格式保存。
*--支持的格式-----------------------
*!*    #Define  AZTEC                 1
*!*    #Define  CODABAR            2
*!*    #Define  CODE_39            4
*!*    #Define  CODE_93            8
*!*    #Define  CODE_128            16
*!*    #Define  DATA_MATRIX        32
*!*    #Define  EAN_8                64
*!*    #Define  EAN_13                128
*!*    #Define  ITF                256
*!*    #Define  MAXICODE            512
*!*    #Define  PDF_417            1024
*!*    #Define  QR_CODE            2048
*!*    #Define  RSS_14                4096
*!*    #Define  RSS_EXPANDED        8192
*!*    #Define  UPC_A                16384
*!*    #Define  UPC_E                32768
*!*    #Define  All_1D                61918
*!*    #Define  UPC_EAN_EXTENSION    65536
*!*    #Define  MSI                131072
*!*    #Define  PLESSEY            262144
*!*    #Define  IMB                524288
*!*    #Define  PHARMA_CODE        1048576

2,生成带logo标志的二维码的函数:
参数说明:
m.lcBarCodeString:需要编码的字符串
m.lcFile:指定的logo图片文件
m.oNetQR.GenerateQRCodeWithLoge( m.lcBarCodeString, m.lcFile, m.lnWidth, m.lnHeight, m.lnMargin)
4 天前 11:04
快速回复:使用第三方库实现QRCode的识别
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.077433 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved