Joh*_*ohn 2 c++ com visual-c++
我正在破译一个使用COM的巨大项目,我完全不熟悉它.这很令人困惑,我无法弄清楚一切如何相互作用.我所看到的只是InvokeHelper(...),我希望看到大量的代码.什么是InvokeHelper()?它有什么作用?感谢您的任何帮助.
虽然这是迟到的答案,但我想在这里发布,因为我花了几天的时间来弄清楚它是如何工作的.它可能对其他人感兴趣.
下面是如何从InvokeHelper()调用获取实际代码的路径:
当然,如果您没有带有CLSID的COM类的源代码,则无法查看该方法,但至少,您可以按如下方式查找其名称:
DISPID dispidCommand = 0x1; /// This is the dispid, you're looking for
COleDispatchDriver driver;
BOOL bRes = driver.CreateDispatch(GetClsid());
ASSERT(bRes);
HRESULT hr;
CComPtr<ITypeInfo> pti;
hr = driver.m_lpDispatch->GetTypeInfo(0, GetUserDefaultLCID(), &pti);
ASSERT(SUCCEEDED(hr));
UINT nCount = 0;
CComBSTR bstrName; // Name of the method, which is called via DISPID
hr = pti->GetNames(dispidCommand, &bstrName, 1, &nCount);
ASSERT(SUCCEEDED(hr));
Run Code Online (Sandbox Code Playgroud)
我希望它对某人有帮助.照顾自己.