ctype调用DLL中的函数问题已经成功解决

(2005-10-12 12:56:18)

senddata.dll中的函数原型如下:

--------------------------------------------

int _stdcall SRDConnect(char *ExecName, int ShowState, RECT *Rect);#连接系统

int _stdcall SRDDisConnect();#关闭

int _stdcall SRDOpenFile(char *FileName, int *FileNo);#打开模板

int _stdcall SRDCloseFile(int FileNo);#关闭模板

python中对应函数声明如下:

------------------------------------------

hinst = ctypes.windll.LoadLibrary('f:\\mtform\\dtp\\senddata.dll')

#LoadLibrary先

srdConnect = hinst.SRDConnect

#这一步是关键,等同于C中的GetProcAddress(HInst,

#"SRDConnect"),通过名字得到函数地址(指针)

srdDisConnect = hinst.SRDDisConnect

#下面是其它的函数

srdOpenFile = hinst.SRDOpenFile

srdCloseFile = hinst.SRDCloseFile

fileno = ctypes.c_int(0)

#由于要用到一个int *,在ctype中这样处理

pfileno = ctypes.pointer(fileno)

#poionter就是把一个int变成int*

srdConnect('f:\\mtform\\dtp\\dtpw.exe',1,None)

#这里None原本是个结构在ctype中用class来代替,这里省略

srdOpenFile('f:\\mtform\\dtp\\pingan\\aaa.tpf',pfileno)

#pfileno就是一个int*

srdCloseFile(pfileno.contents)

#pointer.contents得到指针的内容

srdDisConnect()

还有其它的一些处理比如char*,数组,结构等处理,在文档中都有说明这里不再举例。

我看许多人卡壳就是不知如何得到Dll中的函数地址,昨晚我也是。奇怪的是在官方的文档中没有说明我的这种方法。文档中讲的其它方法我都试过了。

python的方便之处在于随时在命令行试。

分享:

喜欢

0

赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

c语言ctype函数指针,ctype调用DLL中的函数问题已经成功解决相关推荐

  1. php调用dll函数,[转载]matlab调用DLL中的函数

    首先,这种调用在 Matlab 的帮助文档中有说明.它的英文名称为: MATLAB Interface to Generic DLLs 从这个帮助文档,我们不难看出,整个过程为:加载 DLL ,调用相 ...

  2. 在C++中调用DLL中的函数(2)

    本文转自:http://blog.sina.com.cn/s/blog_53004b4901009h3b.html 应用程序使用DLL可以采用两种方式: 一种是隐式链接,另一种是显式链接.在使用DLL ...

  3. C#调用dll中的函数

    C#调用dll中的函数 文章分类:操作系统 文章来源:http://blog.csdn.net/strmagic/archive/2007/11/02/1863462.aspx 大家在实际工作学习C# ...

  4. 天马行空W:在C++中调用DLL中的函数

    1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...

  5. 通过GetProcAddress函数动态调用dll中地函数,是否必须通过extern C声明导出函数?(转)...

    通过GetProcAddress函数动态调用dll中的函数,是否必须通过extern "C"声明导出函数? [已结贴,结贴人:darongtou] 如题,网上搜了N多资料,一直找不 ...

  6. 如何调用 DLL 中的函数

     如何调用 DLL 中的函数 在 DLL工程中的 cpp中函数定义如下: extern "C" _declspec (dllexport ) int add(int a, ch ...

  7. 在C++中调用DLL中的函数

    1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...

  8. GetProcAddress()函数动态调用DLL中的函数,是否必须通过extern C声明导出函数?

    GetProcAddress()函数动态调用DLL中的函数,是否必须通过extern C声明导出函数? 通过GetProcAddress函数动态调用dll中的函数,是否必须通过extern " ...

  9. 如何调用DLL中的函数

    如何调用 DLL 中的函数 在 DLL工程中的 cpp中函数定义如下: extern "C" _declspec (dllexport ) int add(int a, char ...

  10. 从零开始使用InnoSteup进行程序打打包以及调用dll中的函数

    本示例涉及: 程序的打包和数字签名 InnoSetup的快速上手 以及一个产品从编译到安装的过程演示 首先,我提供一份InnoSteup的脚本文件,小伙伴们可直接使用这个脚本进行打包(不过得修改一下相 ...

最新文章

  1. 对于指针传入函数,却最终没有改变指针的值的问题
  2. 英文构词法 —— ant、ent 后缀
  3. Java高阶部分知识点汇总(一)- 成员变量与局部变量详讲
  4. 如何改进yolov3_揭秘YOLOv3鲜为人知的关键细节
  5. Servlet开发(二)
  6. GDCM:gdcm::DataElement的测试程序
  7. 使用Dockerfile构建SpringBoot应用镜像
  8. JS以及CSS对页面的阻塞
  9. 软件测试用例_软件测试用例设计实战场景法
  10. android背景不填充,(Android Studio)应用程序背景图像不填充屏幕
  11. cannot mount database in EXCLUSIVE mode
  12. 非常的好的协同过滤入门文章(ZZ)
  13. PDF内嵌字体分析 - 提取的文字是乱码原因分析
  14. iOS历史回顾(iOS1~iOS8)
  15. 英语字母表及其冠词用法
  16. Photoshop制作逼真燃烧的文字效果
  17. 基于Docker离线部署开源视频会议系统Jitsi-Meet
  18. JAVA工具类(17)--Java导入导出Excel工具类ExcelUtil
  19. android 11.0 12.0USB连接模式默认设为MTP
  20. 为啥不用美元作为IPFS体系的激励?

热门文章

  1. SpringMVC、Struts1和Struts2区别
  2. 【C++学习笔记】密码转盘锁解题,记录开锁步骤
  3. 【烈日炎炎战后端】JAVA多线程(11.2万字)
  4. Android复制文件
  5. python绘制单线图_教你快速利用CAD绘制管道单线图.pdf
  6. python14张图下载_Python网络爬虫入门(三)—— 做个简陋的pixabay 图片下载器 (附源码)...
  7. 心理测试软件需求分析报告,大学生心理测试软件心理测评档案管理系统
  8. 数据结构——约瑟夫环(循环链表C语言版)
  9. 集成融云 即时通讯总结
  10. Web渗透测试工程师:入门知识