繁体   English   中英

ActiveX和COM用于进程间通信

[英]ActiveX and COM for interprocess communication

我有一个生成ActiveX事件的封闭源代码程序,我需要修改我的代码,以便可以接收这些事件。 因此,我们有两个单独的可执行文件,并且没有使用GUI。 到目前为止,我到了这一点,这仅在事件是由同一进程生成和接收的情况下才有效:

[event_source(native)]
class CSource {
public:
    __event void MyEvent(int nValue);
};

[event_receiver(native)]
class CReceiver {
public:
    void MyHandler(int nValue) { ... }

    void hookEvent(CSource* pSource) {
        __hook(&CSource::MyEvent, pSource, &CReceiver::MyHandler);
    }

    void unhookEvent(CSource* pSource) {
        __unhook(&CSource::MyEvent, pSource, &CReceiver::MyHandler);
    }
};

int main() {
    CSource source;
    CReceiver receiver;

    receiver.hookEvent(&source);
    __raise source.MyEvent(123);
    receiver.unhookEvent(&source);
}

现在, event_source在我需要与之交互的应用程序中。 在两个单独的过程中,如何连接接收器和源?

解释或一些参考将很有用。

  1. 您不希望使用归因的C ++,因为即使仍然支持它,但事实是,至少从VS 2008起,它就已被弃用。
  2. 您需要使用event_receiver(com ,而不是native类型,因为存在ActiveX事件
  3. 上面的项目建议您不要使用属性,而应使用IDispEventImplIDispEventSimpleImpl类来实现ActiveX控件事件的接收器(本文提供了代码段并引用了示例项目)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM