1

我已经能够像这样创建 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”方法时遇到了一些麻烦。我不知道如何调用或使用变体。

任何代码提示?

4

2 回答 2

2

至少如果我正确阅读文档,您需要一个 BSTR,您可以使用SysAllocString.

于 2012-08-03T19:13:16.313 回答
0

如果您在 C++ 项目中使用 ATL,则可以使用CComBSTR类轻松创建 BSTR 字符串并将其作为参数传递给 OpenDocuments.EditDocuments

CComBSTR tempBstr = _T("c:\\myfolder\\myfile.txt");
someObj->SomeMethodThatUsesBSTR(tempBstr);

如果您不使用 ATL,则可以以相同的方式使用bstr_t类comutil.h

bstr_t tempBstr = _T("c:\\myfolder\\myfile.txt");
someObj->SomeMethodThatUsesBSTR(tempBstr.GetBSTR());

两个类(CComBSTR 和 bstr_t)只是在内部调用SysAllocStringSysFreeString的包装器。

于 2012-08-03T19:33:42.483 回答