जब तक ऑब्जेक्ट IDISpatchEx लागू नहीं करता है तब तक आप सभी उपलब्ध विधियों की गणना नहीं कर सकते हैं।
हालांकि, अगर आप जिस विधि को कॉल करना चाहते हैं उसका नाम पता है, तो आप उचित DISPID को नाम मैप करने के लिए GetIDsOfNames का उपयोग कर सकते हैं।
HRESULT hr;
CComPtr<IDispatch> dispatch;
DISPID dispid;
WCHAR *member = "YOUR-FUNCTION-NAME-HERE";
DISPPARAMS* dispparams;
// Get your pointer to the IDispatch interface on the object here. Also setup your params in dispparams.
hr = dispatch->GetIDsOfNames(IID_NULL, &member, 1, LOCALE_SYSTEM_DEFAULT, &dispid);
if (SUCCEEDED(hr)) {
hr = dispatch->Invoke(1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, dispparams, &varResult, NULL, NULL);
}
संपादित करें: पूर्णता के लिए, मुझे लगता है वहाँ ITypeInfo2 इंटरफ़ेस पूछताछ (यह मानते हुए वस्तु के लिए एक प्रकार लायब्रेरी है) है कि आप तरीकों की एक सूची के लिए IDispatch :: GetTypeInfo से प्राप्त एक तरीका है, लेकिन मैं मैंने यह नहीं किया है। दूसरा जवाब देखें।
स्रोत
2010-01-21 19:52:12
इस उपकरण (स्रोत कोड) देखें: http://sourceforge.net/projects/axfuzz/files/ – lsalamon
और इस: http://www.codeproject.com/KB/atl/ienum.aspx – lsalamon
मैं अन्य उदाहरणों की तलाश में गया और यह भी पाया कि http://spec.winprog.org/typeinf2/ –