c语言ctype函数指针,ctype调用DLL中的函数问题已经成功解决
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中的函数问题已经成功解决相关推荐
- php调用dll函数,[转载]matlab调用DLL中的函数
首先,这种调用在 Matlab 的帮助文档中有说明.它的英文名称为: MATLAB Interface to Generic DLLs 从这个帮助文档,我们不难看出,整个过程为:加载 DLL ,调用相 ...
- 在C++中调用DLL中的函数(2)
本文转自:http://blog.sina.com.cn/s/blog_53004b4901009h3b.html 应用程序使用DLL可以采用两种方式: 一种是隐式链接,另一种是显式链接.在使用DLL ...
- C#调用dll中的函数
C#调用dll中的函数 文章分类:操作系统 文章来源:http://blog.csdn.net/strmagic/archive/2007/11/02/1863462.aspx 大家在实际工作学习C# ...
- 天马行空W:在C++中调用DLL中的函数
1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...
- 通过GetProcAddress函数动态调用dll中地函数,是否必须通过extern C声明导出函数?(转)...
通过GetProcAddress函数动态调用dll中的函数,是否必须通过extern "C"声明导出函数? [已结贴,结贴人:darongtou] 如题,网上搜了N多资料,一直找不 ...
- 如何调用 DLL 中的函数
如何调用 DLL 中的函数 在 DLL工程中的 cpp中函数定义如下: extern "C" _declspec (dllexport ) int add(int a, ch ...
- 在C++中调用DLL中的函数
1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...
- GetProcAddress()函数动态调用DLL中的函数,是否必须通过extern C声明导出函数?
GetProcAddress()函数动态调用DLL中的函数,是否必须通过extern C声明导出函数? 通过GetProcAddress函数动态调用dll中的函数,是否必须通过extern " ...
- 如何调用DLL中的函数
如何调用 DLL 中的函数 在 DLL工程中的 cpp中函数定义如下: extern "C" _declspec (dllexport ) int add(int a, char ...
- 从零开始使用InnoSteup进行程序打打包以及调用dll中的函数
本示例涉及: 程序的打包和数字签名 InnoSetup的快速上手 以及一个产品从编译到安装的过程演示 首先,我提供一份InnoSteup的脚本文件,小伙伴们可直接使用这个脚本进行打包(不过得修改一下相 ...
最新文章
- 对于指针传入函数,却最终没有改变指针的值的问题
- 英文构词法 —— ant、ent 后缀
- Java高阶部分知识点汇总(一)- 成员变量与局部变量详讲
- 如何改进yolov3_揭秘YOLOv3鲜为人知的关键细节
- Servlet开发(二)
- GDCM:gdcm::DataElement的测试程序
- 使用Dockerfile构建SpringBoot应用镜像
- JS以及CSS对页面的阻塞
- 软件测试用例_软件测试用例设计实战场景法
- android背景不填充,(Android Studio)应用程序背景图像不填充屏幕
- cannot mount database in EXCLUSIVE mode
- 非常的好的协同过滤入门文章(ZZ)
- PDF内嵌字体分析 - 提取的文字是乱码原因分析
- iOS历史回顾(iOS1~iOS8)
- 英语字母表及其冠词用法
- Photoshop制作逼真燃烧的文字效果
- 基于Docker离线部署开源视频会议系统Jitsi-Meet
- JAVA工具类(17)--Java导入导出Excel工具类ExcelUtil
- android 11.0 12.0USB连接模式默认设为MTP
- 为啥不用美元作为IPFS体系的激励?
热门文章
- SpringMVC、Struts1和Struts2区别
- 【C++学习笔记】密码转盘锁解题,记录开锁步骤
- 【烈日炎炎战后端】JAVA多线程(11.2万字)
- Android复制文件
- python绘制单线图_教你快速利用CAD绘制管道单线图.pdf
- python14张图下载_Python网络爬虫入门(三)—— 做个简陋的pixabay 图片下载器 (附源码)...
- 心理测试软件需求分析报告,大学生心理测试软件心理测评档案管理系统
- 数据结构——约瑟夫环(循环链表C语言版)
- 集成融云 即时通讯总结
- Web渗透测试工程师:入门知识