如题...

解决方案 »

  1.   

    后面的解决方法,是把代理类CTestServerDlgAutoProxy的下面几个函数搬到主对话框类实现。 DECLARE_DYNCREATE(CTestServerDlgAutoProxy) DECLARE_OLECREATE(CTestServerDlgAutoProxy) // Generated OLE dispatch map functions
    //{{AFX_DISPATCH(CTestServerDlgAutoProxy)
    afx_msg long TestFunction();
    //}}AFX_DISPATCH
    DECLARE_DISPATCH_MAP()
    DECLARE_INTERFACE_MAP()不使用代理类,主对话框在构造函数中,进行下面的注册:
    EnableAutomation();
    DWORD l_ulID;
    CLSID l_clsid;
    IUnknown*   l_pUnk = GetControllingUnknown(); 
    ::CLSIDFromProgID(L"TestServer.Application", &l_clsid);
    HRESULT hr = ::RegisterActiveObject(l_pUnk, l_clsid, ACTIVEOBJECT_WEAK, &l_ulID); 这样,当主对话框启动后,客户进程就直接GetActiveObject就可以了。