COM IDispatch, , , , IDispatch:: Invoke, , DISPID COM-.
EDIT: , , , . ClassInterfaceType None, , .NET IMyInterface1 ( , , ComDefaultInterfaceAttribute ).
ClassInterfaceType AutoDual AutoDispatch, DISPIDs , .
.NET , , , ".NET open as COM", DISPID ( ), , DISPID , , regasm .
++, :
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
IDispatch *pDispatch;
CoCreateInstance(__uuidof(MyClass), NULL, CLSCTX_ALL, IID_IDispatch, (void**)&pDispatch);
DISPID dispid;
LPOLESTR name1 = L"Name1";
LPOLESTR name2 = L"Name2";
HRESULT hr;
hr = pDispatch->GetIDsOfNames(IID_NULL, &name1, 1, 0, &dispid);
printf("Name1:%i hr=0x%08X\n", dispid, hr);
hr = pDispatch->GetIDsOfNames(IID_NULL, &name2, 1, 0, &dispid);
printf("Name2:%i hr=0x%08X\n", dispid, hr);
pDispatch->Release();
CoUninitialize();
return 0;
}
:
Name1:1 hr=0x00000000 (S_OK)
Name2:-1 hr=0x80020006 (DISP_E_UNKNOWNNAME)
AutoDispatch AutoDual, ( ):
Name1:1610743812 hr=0x00000000
Name2:1610743813 hr=0x00000000