免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1825 | 回复: 8
打印 上一主题 下一主题

求助关于dll调用的一些问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-23 19:48 |只看该作者 |倒序浏览
本帖最后由 mujian669 于 2012-05-23 19:50 编辑

一个图片识别的dll,原版给了vb的文档和例子,我想用python实现,结果怎么也没成功,希望大家给看看应该怎么办。

vb里面的文档和代码:
Private Declare Function GetByteVcode Lib "Vcode.dll" (ByVal ByteData As String, ByVal ByteLength As String, ByVal Index As String, ByVal Result As String) As Boolean
  1.     Private Sub Command4_Click()
  2.         Dim Gt As Boolean, Result As String
  3.          
  4.         Dim a() As Byte
  5.         Dim n As Long
  6.         Dim b As Long
  7.         a = Xhttp("http://......")
  8.         n = VarPtr(a(0))
  9.         b = UBound(a) + 1
  10.       
  11.         Rem
  12.         Result = Space$(100)
  13.       
  14.         Gt = GetByteVcode(n, b, 1, Result)
  15.       
  16.         Text2.Text = Result
  17.     End Sub

复制代码
自己绞尽脑汁,多方求助,写了下面的代码:
  1. # -*- coding: utf-8 -*-

  2. import ctypes,cookielib, urllib,urllib2,os

  3. cj = cookielib.LWPCookieJar()
  4. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
  5. opener.addheaders = [('Accept-Language','zh-cn'),('Content-Type','...')]
  6. urllib2.install_opener(opener)

  7. sock = opener.open("http://……","rb")
  8. fp = sock.read()
  9. sock.close()

  10. pStr =  ctypes.POINTER(ctypes.c_char)()
  11. pStr.value = fp
  12. pVoid = ctypes.cast( pStr, ctypes.POINTER(ctypes.c_int))

  13. ml=os.getcwd()
  14. dll=ctypes.windll.LoadLibrary(ml+'\\Vcode.dll')
  15. var="     "
  16. dll.GetByteVcode(pVoid,len(pStr.value),"1",var)
  17. print var

复制代码
结果还是报错:WindowsError: exception: access violation reading 0x000005B8

请问大家这个错在哪里了啊?

论坛徽章:
0
2 [报告]
发表于 2012-05-23 21:02 |只看该作者
本帖最后由 106033177 于 2012-05-23 21:04 编辑

回复 1# mujian669

给个dll吧。这个东西识别率有多高?
   

论坛徽章:
0
3 [报告]
发表于 2012-05-23 21:58 |只看该作者
本帖最后由 mujian669 于 2012-05-23 22:00 编辑

识别率,是看你做的库,样本越多,识别越高,程序绑定了电脑了。

VB.rar

388.28 KB, 下载次数: 5

论坛徽章:
0
4 [报告]
发表于 2012-05-24 11:23 |只看该作者
回复 1# mujian669
有vcode的头文件吗?


   

论坛徽章:
0
5 [报告]
发表于 2012-05-24 11:47 |只看该作者
回复 4# 106033177


    什么头文件?

论坛徽章:
3
卯兔
日期:2013-08-15 13:17:31处女座
日期:2014-01-10 11:35:23双子座
日期:2014-01-25 02:16:06
6 [报告]
发表于 2012-05-25 08:06 |只看该作者
识别率是训练出来的吧?

论坛徽章:
0
7 [报告]
发表于 2012-05-25 08:39 |只看该作者
回复 6# sunny7476


    是的……

论坛徽章:
0
8 [报告]
发表于 2012-05-25 09:31 |只看该作者
回复 1# mujian669
晕。这个dll不是用c写的?!! 好诡异的参数格式 ,传地址要写成字符串?!!太难猜了
  1. from ctypes import *
  2. buf = create_string_buffer(open('d:/test.bmp','rb').read())
  3. res = create_string_buffer(500)
  4. dll.GetByteVcode(str(addressof(buf)),str(len(buf)),'1',res)

复制代码

论坛徽章:
0
9 [报告]
发表于 2012-05-25 10:30 |只看该作者
回复 8# 106033177


原来如此,太感谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP