问题:我有一个可以在另一个程序中加载的DLL。 现在,dll可以访问其他程序中的所有数据/函数。
现在外部程序可以向该dll发送数据/命令,引导其他程序或从中获取数据,我可以使用哪种技术?
我的意思是,在过去,这意味着DDE,我认为这是在Windows 3.11 / 95次。 我今天可以用什么?哪一个最容易?哪一个最快?
答案 0 :(得分:6)
一些常见的是:
答案 1 :(得分:4)
COM是当今以Windows为重点的应用程序的事实上的标准IPC机制。
它允许跨语言障碍访问,解决二进制接口兼容性问题,为您进行透明编组,并具有不同的线程模型。
sharptooth很好地总结了一些事实here。
答案 2 :(得分:1)
OP提到同时发送数据和命令。如果发送方和接收方都在同一用户帐户中运行,则发送命令的一个不错的选择是定义一条自定义WM_APP
或WM_USER
消息,并与{{ 1}}。 Windows仍然是Windows。
如果接收程序没有窗口,则可以始终为它提供一个不可见的窗口。如果由于某种原因而无法执行此操作,则PostMessage()
是后备选项。这不是最佳做法,因为它可以在窗口管理器的权限范围之外工作,但是可以工作。
当然,如果发送者和接收者使用不同的帐户运行,则PostThreadMessage()
和PostMessage()
将无法工作。您必须使用已经提到的支持Windows安全性的其他方法之一。
答案 3 :(得分:0)
不要忘记Remoting,以获得.NET中更高级别的可能性
答案 4 :(得分:0)
对于简单快速的沟通,您可以考虑Mailslots。它们非常易于使用。您可以像对待文件一样与它们进行交互。
Mailslots 最适合用于向多个收件人广播命令,或从多个制作人接收邮件,并且您的设计可以容忍偶尔丢失的邮件。如上所述,命名管道更适合单个过程到单个过程,保证交付IPC。
好消息
坏消息
有许多样本可供使用,但我还没有足够的代表发布超过一个 C ++中的on CodeProject