簡體   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