A kapcsolódások és az automatizálás elosztása, a titkosítással kapcsolatos blog
Az automatizálás egy másik módszer egy összetevő kezelésére. Automatizálás - COM bővítmény.
Az Automation kiszolgáló egy olyan COM-összetevő, amely az IDispatch felületet valósítja meg.
Az automatizálási vezérlő olyan COM-ügyfél, amely az IDispatch felületen kommunikál a kiszolgálóval. (A funkcióhívásokhoz a kiszolgáló a felület tagjainak funkcióit használja - implicit hívást).
Kezdetben az Automatizálást Visual Basic fejlesztette ki.
Szinte minden olyan szolgáltatás, amelyet a COM interfészek képviselnek, megjeleníthető az IDispatch segítségével.
IDispatch interfész
Az IDispatch egyetlen szolgáltatáson keresztül biztosítja az összes szolgáltatás elérését.
Az IDispatch egy funkcióhívást biztosít három paraméterben: az összetevő ProgID-jának, a függvény nevének és annak érveinek.
Az IDispatch felület a következő formális leírással rendelkezik:
interfaceIDispatch. IUnknown // az OAidl.idl fájlból
HRESULT GetTypeInfoCount ([ki] UINT * pctinfo);
HRESULT GetTypeInfo ([in] UINT iTInfo,
LCID lsid;
[out] ITypeInfo ** ppTInfo);
HRESULT GetIDsOfName ([in] REFIID riid, // Elfogadja a függvény nevét és
// visszaadja
[in, size_is (cNames)] LPOLESTR * rgszNames, // Küldés
// azonosító
[in] UINT cNames,
LCID lcid,
[ki, size_is (cNames)] DISPID * rgDispId); // DISPID hosszú
Hosszú és nem egyedi
// Minden IDispatch végrehajtásnak van saját IID-je (néha DIID).
HRESULT Invoke ([in] DISPID dispIdMember, // Automatizálás vezérlő
[in] REFIID riid, // átadja a hívott DISPID-ot
// függvények az Invoke-ban
[be, ki] DISPPARAMS * pDispParams,
[ki] VARIANT * pVarResult,
[out] EXEPINFO * pExcepinfo,
[ki] UINT * puArgErr
A DISPID-t az Invoke tag függvény használja indexként a függvénymutatók tömbjében. Az Automation szervernek azonban nem kell végrehajtania az Invoke szolgáltatást. Használhatja a szokásos kapcsolási nyilatkozatot.
IDispatch :: Invoke implementálja az index által elérni kívánt funkciókat.
Az IDispatch :: Invoke alkalmazással végrehajtott funkciókészletet a diszpécseri felület (disp-interface)
Az IDispatch :: Invoke végrehajtása olyan funkciókat határoz meg, amelyekkel a szerver és az automatizálási vezérlő kommunikál.
Példa a DISP interfész lehetséges megvalósítására: