gpt4 book ai didi

c++ - 用于进程间通信的 ActiveX 和 COM

转载 作者:行者123 更新时间:2023-11-28 02:42:15 26 4
gpt4 key购买 nike

我有一个生成 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 控件事件的接收器(文章提供了代码片段并引用了示例项目)。

关于c++ - 用于进程间通信的 ActiveX 和 COM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25553677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com