Com - Сервер И C#

Тема в разделе ".NET", создана пользователем m9yt, 21 июн 2012.

  1. m9yt

    m9yt New Member

    Регистрация:
    27 фев 2010
    Сообщения:
    2
    Симпатии:
    0
    Привет всем. Изучаю книгу Роджерсона Основы Com. Там создается простейший интерфейс:
    Код (C++):
    #include <InitGuid.h>
    interface IX : IUnknown
    {
    virtual void pascal Fx() = 0;
    };

    interface IY : IUnknown
    {
    virtual void pascal Fy() = 0;
    };

    interface IZ : IUnknown
    {
    virtual void pascal Fz() = 0;
    };

    DEFINE_GUID(IID_IX, 0x32bb8320, 0xb41b, 0x11cf, 0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82);
    DEFINE_GUID(IID_IY, 0x32bb8321, 0xb41b, 0x11cf, 0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82);
    DEFINE_GUID(IID_IZ, 0x32bb8322, 0xb41b, 0x11cf, 0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82);
    DEFINE_GUID(CLSID_Component1, 0x0c092c21, 0x882c, 0x11cf, 0xa6, 0xbb, 0x0, 0x80, 0xc7, 0xb2, 0xd6, 0x82);
    И класс, реализующий эти функции (Реализацию IUnknown опустил):
    Код (C++):
    class CA : public IX, public IY
    {
    public:
    // IUnknown
    virtual HRESULT __stdcall QueryInterface(const IID& iid, void** ppv);
    virtual ULONG __stdcall AddRef();
    virtual ULONG __stdcall Release();

    // Interface IX
    virtual void __stdcall Fx() { cout << "Fx" << endl;}

    // Interface IY
    virtual void __stdcall Fy() { cout << "Fy" << endl;}

    // Constructor
    CA();

    // Destructor
    ~CA();

    private:
    // Reference count
    long m_cRef;
    };
    Создание dll и регистрацию тоже опущу.
    Вот часть клиента:
    Код (C++):
    CoInitialize(NULL);
    IX* pIX = NULL;
    HRESULT hr = ::CoCreateInstance(CLSID_Component1, NULL, CLSCTX_INPROC_SERVER, IID_IX, (void**)&pIX);
    Ни CoInitialize(NULL), ни CoCreateInstance(...) не видны в C#. Как быть - то? Я хочу использовать свой сервер для вызова функций в клиенте, написанном на C#(графический интерфейс).
     
  2. a0z

    a0z Well-Known Member

    Регистрация:
    15 мар 2011
    Сообщения:
    109
    Симпатии:
    0
    Начать отсюда и дальше гуглить, гуглить, гуглить. Как завещал старик Крупский.
     
Загрузка...

Поделиться этой страницей