社区
VB基础类
帖子详情
activex dll 的单线程和单元线程 不理解 请高手指点?
globevb
2004-03-12 10:00:09
activex dll 的单线程和单元线程 不理解 请高手指点?
...全文
55
1
打赏
收藏
activex dll 的单线程和单元线程 不理解 请高手指点?
activex dll 的单线程和单元线程 不理解 请高手指点?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Thanks4Help
2004-03-16
打赏
举报
回复
up
ThreadSyncHelper
由于Delphi VCL库中使用了全局变量,导致
DLL
和
ActiveX
封装的
线程
无法使用TThread的Synchronize方法进行
线程
同步调用。 ThreadSyncHelper.pas弥补了该缺陷,使用方便,只需在
DLL
和
ActiveX
工程种引用该
单元
即可。原理正是VCL自身的同步机制。 注:App不要引用该
单元
。
Delphi中制作
DLL
中回调函数的应用
Delphi中制作
DLL
•一
Dll
的制作一般分为以下几步: 1 在一个
DLL
工程里写一个过程或函数 2 写一个Exports关键字,在其下写过程的名称。不用写参数和调用后缀。 二参数传递 1 参数类型最好与window C++的参数类型一致。不要用DELPHI的数据类型。 2 最好有返回值[即使是一个过程],来报出调用成功或失败,或状态。成功或失败的返回值最好为1[成功]或0[失败].一句话,与windows c++兼容。 3 用stdcall声明后缀。 4 最好大小写敏感。 5 无须用far调用后缀,那只是为了与windows 16位程序兼容。 三
DLL
的初始化和退出清理[如果需要初始化和退出清理] 1
DLL
Proc[SysUtils
单元
的一个Pointer]是
DLL
的入口。在此你可用你的函数替换了它的入口。但你的函数必须符合以下要求[其实就是一个回调函数]。如下: procedure
Dll
EnterPoint(dwReason: DWORD);far;stdcall; dwReason参数有四种类型:
DLL
_PROCESS_ATTACH:进程进入时
DLL
_PROCESS_DETACH进程退出时
DLL
_THREAD_ATTACH
线程
进入时
DLL
_THREAD_DETACH
线程
退出时 在初始化部分写:
DLL
Proc := @
DLL
EnterPoint;
Dll
EnterPoint(
DLL
_PROCESS_ATTACH); 2 如Form上有TdcomConnection组件,就Uses
Activex
,在初始化时写一句CoInitialize (nil); 3 在退出时一定保证DcomConnection.Connected := False,并且数据集已关闭。否则报地址错。 四全局变量的使用 在widnows 32位程序中,两个应用程序的地址空间是相互没有联系的。虽然
DLL
在内存中是一份, 但变量是在各进程的地址空间中,因此你不能借助
dll
的全局变量来达到两个应用程序间的数据 传递,除非你用内存映像文件。 五、其他:调用方式按照标准的Windows调用方式. 六、关于参数传递 •Delphi程序之间调用
DLL
,如果要用String类型的话,要在引用的
单元
加上ShareMem
单元
。 •如果Delphi写的
DLL
供其他开发工具使用的话,不要使用String类型,用PAnsiChar类型。 尽量使用标准
DLL
接口。指的是传递的参数类型及函数返回类型不能是Delphi特有的, 比如string(AnsiString),以及动态数组和含有这些类型成员的复合类型(如记录),也不 能是包含有这些类型成员数据成员的对象类型,以避免可能的错误。如果使用了string类型或 动态数组类型,且调用方不是Delphi程序,则基本上会报错。如果调用方是Delphi但调用方或 被调用方没有在工程文件的第一包含
单元
不是ShareMem,也可能会出错。 七、关于回调Funciton 你可以把Callback函数看作是一种特殊的消息响应函数,一般来说我们不会自己调用这种函数, 而是有某些系统函数调用,而且不需要向后传递消息。 只要象C/C++这样支持函数指针的语言都 有回调函数的概念,它实际上是向被调用函数传一个你的函数地址,然后被调用函数向通过你传 入的函数地址来调用你的函数 。 以上是结构化回调,到高级语言Object Pascal、C++中回调函数并没有退出,反而得到延伸与 扩展,在面向对像中的回调,其实是指面向对像中类对像的事件,事件就是原始的回调函数。面 向对像, 将回调函数定义成事件过程,在程序引用对像时,若指定了对像的过程事件后,那么在 要进行事件触发的地方检查事件过程是否分配,如果分中的就执行事,也就是执行了回调函数。
项目实战:Java Applet与
ActiveX
控件应用
作为一个程序员和架构师,掌握控件的开发和集成技术,是必须的技能; 浏览器中显示的内容主要是标签,当需要复杂操作时,控件技术是超越标签、给B/S项目扩展功能的重要方法! 学习本套视频,主要是掌握java applet...
jacob扩展程序-jacob-1.19-x64 Jacob库的64位
DLL
文件
jacob-1.19-x64.
dll
是一个Jacob库的64位
DLL
文件,它提供了Java和COM组件之间的桥接,可以使得Java程序访问COM组件并与其交互。 主要作用包括: 1. 使Java程序能够实例化COM对象,设置和获取COM对象的属性及调用COM对象的方法。 2. 使COM对象能够调用Java对象的方法并访问Java对象的字段。 3. 支持在Java和COM之间传递参数。 4. 支持在Java
线程
和
单
线程
COM间转换。 5. 提供事件回调的机制,允许COM对象中的事件触发Java回调方法。 6. 支持通过
ActiveX
控件在Java Swing应用程序中嵌入COM组件。 7. 支持通过JACOB提供的API自动生成与指定COM组件交互的代码。 8. 支持注册及调用COM的接口。 9. 支持处理COM接口中的默认参数。 10. 支持访问COM组件中的常量定义。所以jacob-1.19-x64.
dll
VB基础类
7,763
社区成员
197,609
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章