我有2个桌面应用程序,我希望与外部应用程序集成。其中一个应用程序扩展了我开发的插件,以提供所有发行版不常见的特定功能。可以在下图中描述这种情况:
alt text http://img32.imageshack.us/img32/8902/integration1.png
正如我所提到的,我想将我的应用程序与外部应用程序或SDK集成(接收和发送数据)。通常有两种来自外部应用程序的数据:
使用“核心应用程序”,可以在此图中描述所需的情况:
alt text http://img32.imageshack.us/img32/3299/integration2.png
常规数据在Core Application中处理,特定数据在插件(支持插件)中处理。
此应用程序的分发可能是
之一对于其他应用程序,我想保留相同的“集成商”,但要在应用程序内部以不同方式处理它们:
alt text http://img32.imageshack.us/img32/2088/integration3x.png
如我刚才所述,您如何建议在我的应用程序中实现集成外部应用程序和SDKS的支持?
注意:
答案 0 :(得分:1)
我同意评论者的意见,COM似乎是一个很好的策略。 您的支持dll在安装后会被注册,然后您的核心应用程序可以查找插件,例如:
hr = CLSIDFromProgID(L"Wakko.1.0", &clsid);
hr = GetActiveObject(clsid, NULL, &punk);
或
hr = CoCreateInstance(clsid, ...,..., IID_IWAKKO, ...);
答案 1 :(得分:0)
查看Windows here
的IPC选项对我而言COM在这里看起来是个不错的选择。
另一种方法是让你的核心应用程序运行一个服务器来监听来自你的插件的调用。您可以使用名称管道来实现此目的。现在,您的支持应用程序将使用这些插件与您的核心应用程序进行通信(通过命名管道)。