2014-08-28 8 views
0

ActiveX 이벤트를 생성하는 닫힌 소스 프로그램이 있는데 이러한 이벤트를 수신 할 수 있도록 광산을 수정해야합니다. 따라서 두 개의 별도 실행 파일이 있으며 GUI는 사용되지 않습니다.프로세스 간 통신을위한 ActiveX 및 COM

[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 내가와 상호 작용하는 데 필요한 응용 프로그램에 : 지금까지 이벤트가 생성되고 동일한 프로세스에 의해 수신되는 경우에만 작동이 시점에 도착. 수신기와 소스가 서로 다른 두 개의 프로세스에있을 때 어떻게 연결합니까?

설명 또는 일부 참조가 유용합니다.

답변

2
  1. 당신은 그것을 계속 지원에도 불구하고 이후 기인 C++를 원하지 않는, 현실은 최소한 때문에 VS 2008
  2. 액티브 이벤트에 있기 때문에 당신은 event_receiver(com하지 native 형식이 필요를 더 이상 사용되지이다 질문
  3. 위의 항목을 사용하면 특성을 사용하지 않고 IDispEventImpl 또는 IDispEventSimpleImpl 클래스를 사용하여 ActiveX 컨트롤 이벤트의 수신기를 구현할 것을 제안합니다.이 기사에서는 코드 조각을 제공하고 샘플 프로젝트를 참조합니다.