我能够像这样创建SharePoint.OpenDocuments.1 ActiveX控件的实例:
CLSID clsid;
HRESULT hResult;
IDispatch *pWApp;
LPCOLESTR strPid = L"SharePoint.OpenDocuments.1";
CoInitialize(NULL);
hResult = CLSIDFromProgID(strPid, &clsid);
if(SUCCEEDED(hResult))
hResult = CoCreateInstance(clsid, NULL, CLSCTX_ALL , IID_IDispatch, (void **)&pWApp);
我在使用文档名称调用“EditDocument”方法时遇到了一些麻烦。我无法弄清楚如何调用或使用变体。
任何代码提示?
答案 0 :(得分:2)
至少如果我正确阅读文档,您需要一个BSTR,您可以使用SysAllocString
创建。
答案 1 :(得分:0)
如果您在C ++项目中使用ATL,则可以使用类CComBSTR轻松创建BSTR字符串,并将其作为参数传递给OpenDocuments.EditDocuments
CComBSTR tempBstr = _T("c:\\myfolder\\myfile.txt");
someObj->SomeMethodThatUsesBSTR(tempBstr);
如果您不使用ATL,则可以同样方式使用comutil.h
中的课程bstr_t:
bstr_t tempBstr = _T("c:\\myfolder\\myfile.txt");
someObj->SomeMethodThatUsesBSTR(tempBstr.GetBSTR());
两个类(CComBSTR和bstr_t)都只是内部调用SysAllocString和SysFreeString的包装器。