Avatar billede cplus Nybegynder
04. juli 2003 - 13:11 Der er 1 kommentar og
1 løsning

COM og IDispatch

Jeg sidder og arbejder lidt med COM/OLE...

Og jeg kører så en lille test hvor min automation server har én funktion. Samtidig har jeg lavet et lille program hvor ved tryk på en knap skal der skabes forbindelse via en class-wrapper med COleDispatchDriver.

ProneLog.Document er blevet registeret i reg.

Og koden ser således ud.
Jeg undersøger først om der allerede er et aktivt doc objekt. Hvis ikke opret det da:

try
    {
        CLSID Clsid;
       
        if( CLSIDFromProgID(OLESTR("ProneLog.Document"),&Clsid) != S_OK )
            MessageBox("The CLSID was not found in registry!","Error COM",MB_ICONERROR|MB_OK);
       
        LPUNKNOWN lpUnknown;
        LPDISPATCH lpDispatch;

       
        //ProneLog document er endnu ikke åbnet -Tildel dispatch til IProneLog.
        if(GetActiveObject(Clsid, NULL, &lpUnknown) == S_OK)
        {
            HRESULT hr= lpUnknown->QueryInterface(IID_IDispatch, (LPVOID*)&lpDispatch);
            lpUnknown->Release();

            if(hr ==S_OK)
            {
                COM_ProneLog.AttachDispatch(lpDispatch, TRUE);   
            }
        }
       
        //if(COM_ProneLog.m_lpDispatch == NULL && !COM_ProneLog.CreateDispatch(Clsid, &OleExc))
        //    MessageBox("Unable to create ProneLog Dispatch driver!\n Is ProneLog automation-server registered?",
        //        "Error connecting...",MB_ICONERROR|MB_OK);
       
       
        //ja ja den er sand hver gang :)
        if( COM_ProneLog.m_lpDispatch == NULL)
            MessageBox("Long Pointer to Dispatch interface dead!", "Exception caught within COM", MB_ICONERROR|MB_OK);   

       
        COM_ProneLog.CreateDispatch(Clsid, OleExc); //<-- Hér går det galt -den kan ikke finde mit interface... why?
    }

Ser CreateDispatch retunerer != 0 hvis funktionen er lykkedes -jeg forstår bare IKKE hvorfor!
Avatar billede cplus Nybegynder
04. juli 2003 - 13:49 #1
Kør CoInitialize();

//That's IT:)
Avatar billede cplus Nybegynder
04. juli 2003 - 13:50 #2
Nå ja---- så døde det spørgsmål lige... Er der nogen som kan give en lille indsigt i DCOM ?
Så giver jeg point !!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester