请大家谈谈插件间通信的方式有哪些?

m_tornado 2010-12-02 09:15:30
最近写东西,需要点素材,这方面随便看了看,了解不多,希望大家踊跃发言:)谢了~
...全文
307 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangminghuangqian 2012-08-13
  • 打赏
  • 举报
回复
初来乍到,小弟受益匪浅呀...
小人物2014 2011-04-24
  • 打赏
  • 举报
回复
主进程和插件可以通过消息交互的,这个很简单的。杜思波
muzizongheng 2010-12-02
  • 打赏
  • 举报
回复
简单通用的就是 socket, 消息。
m_tornado 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fishion 的回复:]

什么命名管理,邮槽都行吧,
[/Quote]

给力~
fishion 2010-12-02
  • 打赏
  • 举报
回复
什么命名管理,邮槽都行吧,
m_tornado 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xianglitian 的回复:]

读写文件最基础了吧
让你的所有插件都去读写一个公共文件
通过这个文件共享信息
当然也可以用socket通信
方正是同一台机器UDP即可
[/Quote]
UDP通信觉得是个不错的方法~


插件技术是悲剧么,都说为了代码重用,结果只是一个口号,除了比较有钱的ms的COM提高到的层次广泛应用外,小作坊都是死路一条,文章一出,插件就死~
剩下的都是在成熟的插件上开发
向立天 2010-12-02
  • 打赏
  • 举报
回复
读写文件最基础了吧
让你的所有插件都去读写一个公共文件
通过这个文件共享信息
当然也可以用socket通信
方正是同一台机器UDP即可
m_tornado 2010-12-02
  • 打赏
  • 举报
回复
如果两个模块之间要共享大量数据,用插件实现是不是从设计上来说就是个错误啊~
看的一些东东里就设计个简单的结构体就足够插件间通信了~
m_tornado 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ouyh12345 的回复:]

如果插件本身有窗口,可以发消息
[/Quote]

发消息这个倒是不错,我想的是代码成型以后便不再修改代码了,如果是事件或者消息的话还要重新编译~能绕过这个么?更多的用配置文件来实现这个~
m_tornado 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jacklzw88 的回复:]

插件间通信?跟进程间通信相同吧。
[/Quote]
我是用dll来实现插件的,通信的话共享内存也尝试过,开辟共享区,让不同的dll把指针共享也弄过,但是方式比较少,希望大家把实际中用到的方式介绍下,谢谢:)
ouyh12345 2010-12-02
  • 打赏
  • 举报
回复
如果插件本身有窗口,可以发消息
jacklzw88 2010-12-02
  • 打赏
  • 举报
回复
插件间通信?跟进程间通信相同吧。
m_tornado 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 muzizongheng 的回复:]

给你说说我的插件是怎么实现的吧, 刚好做了插件系统。

我的每个插件都是一个exe, 只不过自己又做了打包,把二进制里加了自己的信息,保存为特有格式。

然后主程序遍历差价文件夹, 把所有的插件读取出其中的exe和ini等等有用的信息, 然后运行这些exe。
当然我们的界面做的就是google chrome或者ie9,ff这样的一样, 每个tab是一个exe,但界面上是在tabctrl……
[/Quote]

多谢多谢~
muzizongheng 2010-12-02
  • 打赏
  • 举报
回复
给你说说我的插件是怎么实现的吧, 刚好做了插件系统。

我的每个插件都是一个exe, 只不过自己又做了打包,把二进制里加了自己的信息,保存为特有格式。

然后主程序遍历差价文件夹, 把所有的插件读取出其中的exe和ini等等有用的信息, 然后运行这些exe。
当然我们的界面做的就是google chrome或者ie9,ff这样的一样, 每个tab是一个exe,但界面上是在tabctrl里。

插件和住程序之间通过消息交互。 当然其他的共享区域等等都可以,都是父进程和子进程的交互,windows核心编程讲的很清楚了。

希望对你有用。
m_tornado 2010-12-02
  • 打赏
  • 举报
回复

谢谢大家~
m_tornado 2010-12-02
  • 打赏
  • 举报
回复
部长这么一说,我是该考虑考虑了,本来的思路是直接用平台把插件都load进去~
在想是不是该用平台创建一个新进程来载入这些插件,这样一个平台可以跑多个例子,不然就只能一个了~
Eleven 2010-12-02
  • 打赏
  • 举报
回复
跨进程不?
m_tornado 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 muzizongheng 的回复:]

简单通用的就是 socket, 消息。
[/Quote]

xing主任来了哈~:)
m_tornado 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jameshooo 的回复:]

同一个进程内的数据共享,只需要提供一个通知机制即可,什么方法都行,需要这么纠结吗
[/Quote]

没法子,要毕业,一定要调研:)想把法子穷举了~
多谢捧场~
jameshooo 2010-12-02
  • 打赏
  • 举报
回复
同一个进程内的数据共享,只需要提供一个通知机制即可,什么方法都行,需要这么纠结吗

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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