6 folii na stronÄ
6 folii na stronÄ
6 folii na stronÄ
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Interfejs IDispatch,<br />
dispinterfejsy<br />
i automatyzacja<br />
Jarosław Francik<br />
Interface Idispatch : IUnknown<br />
{<br />
HRESULT GetTypeInfoCount([out] UINT __RPC_FAR *pctinfo);<br />
HRESULT GetTypeInfo(<br />
[in] UINT iTInfo, [in] LCID lcid,<br />
[out] ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);<br />
HRESULT GetIDsOfNames(<br />
[in] REFIID riid,<br />
[in] LPOLESTR __RPC_FAR *rgszNames,<br />
[in] UINT cNames,<br />
[in] LCID lcid,<br />
[out, size_is(cNames)] DISPID __RPC_FAR *rgDispId);<br />
HRESULT Invoke(<br />
[in] DISPID dispIdMember,<br />
[in] REFIID riid, [in] LCID lcid, [in] WORD wFlags,<br />
[in] DISPPARAMS __RPC_FAR *pDispParams,<br />
[out] VARIANT __RPC_FAR *pVarResult,<br />
[out] EXCEPINFO __RPC_FAR *pExcepInfo,<br />
[out] UINT __RPC_FAR *puArgErr);<br />
};<br />
interfejs IDispatch (IDL)<br />
Dispinterface<br />
Dispinterface<br />
Klient<br />
IDispatch<br />
QueryInterface<br />
Składnik COM<br />
Klient<br />
IDispatch<br />
QueryInterface<br />
Składnik COM<br />
AddRef<br />
Release<br />
GetTypeInfoCount<br />
dispinterface<br />
"fun1" 1<br />
"fun2" 2<br />
AddRef<br />
Release<br />
GetTypeInfoCount<br />
dispinterface<br />
"fun1" 1<br />
"fun2" 2<br />
GetTypeInfo<br />
GetIDsOfNames<br />
Invoke<br />
"fun3" 3<br />
1 fun1<br />
2 fun2<br />
GetTypeInfo<br />
GetIDsOfNames<br />
Invoke<br />
"fun3" 3<br />
pVTbl fun1<br />
fun2<br />
3 fun3<br />
fun3<br />
dual interface<br />
IDispatch<br />
Klient<br />
QueryInterface<br />
AddRef<br />
Release<br />
GetTypeInfoCount<br />
GetTypeInfo<br />
GetIDsOfNames<br />
Invoke<br />
fun1<br />
fun2<br />
fun3<br />
Składnik COM<br />
dispinterface<br />
"fun1" 1<br />
"fun2" 2<br />
"fun3" 3<br />
Parametry wywołania Invoke<br />
dispIdMember – dispid wywoływanej funkcji<br />
riid – zarezerwowany, ma być IID_NULL<br />
lcid – użyj GetUserDefaultLCID()<br />
wFlags – rodzaj funkcji:<br />
DISPATCH_METHOD, DISPATCH_PROPERTYGET,<br />
DISPATCH_PROPERTYPUT, DISPATCH_PROPERTYPUTREF<br />
pDispParams – tablica parametrów wywołania<br />
tagDISPPARAMS<br />
pVarResult – wynik funkcji (wskaźnik <strong>na</strong><br />
wariant)<br />
pExcepInfo, puArgErr – sytuacje wyjątkowe<br />
1