C++ 如何在c+中使用COM API(办公自动化)获取MS Office文件的纯文本+;
我有一个缓冲区,其中包含Office word文档的一部分。我想使用COM API获取缓冲区的纯文本。我知道如何打开word文档并使用COM API将其保存为文本文档,但这不是我想要的。 作为一种解决方案,我创建了一个内存映射文件对象,并将数据放入其中,然后尝试使用COM API打开它,但“Invoke”表示“变量类型错误”C++ 如何在c+中使用COM API(办公自动化)获取MS Office文件的纯文本+;,c++,api,text,com,office-automation,C++,Api,Text,Com,Office Automation,我有一个缓冲区,其中包含Office word文档的一部分。我想使用COM API获取缓冲区的纯文本。我知道如何打开word文档并使用COM API将其保存为文本文档,但这不是我想要的。 作为一种解决方案,我创建了一个内存映射文件对象,并将数据放入其中,然后尝试使用COM API打开它,但“Invoke”表示“变量类型错误” 是什么让您认为文档对象应该接受文件名或路径以外的任何内容?是什么让您认为文档对象应该接受文件名或路径以外的任何内容? hMapFile = CreateFileMappin
是什么让您认为
文档
对象应该接受文件名或路径以外的任何内容?是什么让您认为文档
对象应该接受文件名或路径以外的任何内容?
hMapFile = CreateFileMapping(
INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
0, // maximum object size (high-order DWORD)
BUF_SIZE, // maximum object size (low-order DWORD)
szName); // name of mapping object
///....
// copy data to hMapFile
///....
////...
// create an instance of Word Application
///...
/// now call open function and send hMapFile instead of a real file
VARIANTARG varg;
varg.vt = VT_BYREF;
//varg.vt = BSTR;
//varg.bstrVal = BSTR(L"F:\\sample2.docx");
varg.byref = hMapFile;
DISPPARAMS dpOpen = { &varg, NULL, 1, 0 };
DISPID dispOpenID;
LPOLESTR szOpenDoc = L"Open";
UINT err = 9;
hr = m_pDocuments->GetIDsOfNames(IID_NULL, &szOpenDoc, 1, LOCALE_SYSTEM_DEFAULT, &dispOpenID);
hr = m_pDocuments->Invoke(dispOpenID, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD, &dpOpen, &varRetVal, &excepInfo, &err);