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 に答える