关于DLL的问题?

zhang_ff 2000-07-26 03:14:00
各位高人:我在用DLL实现两个应用程序之间的数据交换时,遇到了一个令人头疼的问题.我在DLL中定义了一个全局内存句柄,两个程序都通过对其的调用获取了这个句柄并在写入数据时锁定了此句柄所关连的内存,但是向其中写入数据后,另一程序却不能接收到这些数据.而这两个程序所获取handle完全一样.并且如果我只在一个程序中使用此DLL来传送数据,则没有任何问题.
我请教各位这是怎么回事?希望各位不吝赐教.
...全文
125 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jnww 2000-07-28
  • 打赏
  • 举报
回复
呵呵,如果你的DLL不用来完成其他功能,用它交换数据真不划算
fxyyh 2000-07-28
  • 打赏
  • 举报
回复
不妨试一下多线程,一个线程读,一个线程写.或采用Timer
yuxin 2000-07-26
  • 打赏
  • 举报
回复
请你参照windows 编程的经典<<advanced windows>>,
如果使用C语言的话,可以在设计dll的源代码中加入,共享数据区的定义,并且
加上相应的progrma定义。这本书中还有其它的方法可以参照。你可以看一下!!
祝你好运
zhang_ff 2000-07-26
  • 打赏
  • 举报
回复
致kxy:
如你所说win32中每个进程是不知道其他进程的存在,自己独占4GB的进程空间。但是我是在DLL的初始化代码中定义的全局内存块handle,按道理说内存块在用gmem_DDEShare属性进行分配以后,这样的内存块直到被DLL显示释放或DLL退出都应该保持有效.我就是根据这一点来进行数据传输的.对此你有何高见?
另外,对于实现两个应用程序之间的数据交换的方法你是否能给我明示一下何处有相关的源代码例子,不胜感激!
kxy 2000-07-26
  • 打赏
  • 举报
回复
1) win32中每个进程是不知道其他进程的存在。自己独占4GB的进程空间。
2)dll和进程融为一体,每个进程有自己的一份copy.
3) 两个进程的中handle一样,并不代表他们一样。他们是不一样的。
4) 实现两个应用程序之间的数据交换的方法。
a, WM_COPYDATA
b, 存储映像文件。
c. DDE
d, 分配内存用SHARE_MEM标志,我没有用过

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧