Автоматизировать проект Microsoft от переполнения стека

Мы пытаемся прочитать файл .MPP, используя последовательность кода C ++. Следующий код вызывает исключения «нарушение прав доступа», хотя, похоже, он должен работать.

#include "stdafx.h"int main()

{
::CoInitialize(NULL);
_MSProjectPtr pApp;
auto hr = pApp.CreateInstance(__uuidof(Application));
variant_t toOpen = _T("d:\\work\\Test.mpp");
variant_t readOnly = true;
variant_t merge = false;
auto status = pApp->FileOpen(toOpen, readOnly, merge, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,
vtMissing, MSProject::pjDoNotOpenPool);
auto pProject = pApp->GetActiveProject();
auto pSummaryTask = pProject->GetProjectSummaryTask();
auto summaryStart = pSummaryTask->GetStart(); // Access violation raised by this instruction
auto pTasks = pProject->Tasks; // This call succeeds.
auto count = pTasks->Count; // Access violation raised by this instruction.
// Fails at this line with MSP 15.0.4805.1001 (in About box, 15.0.4569.1506 in Control Panel)

pApp->Quit(MSProject::PjSaveType::pjDoNotSave);
::CoUninitialize();
}

Содержимое файла stdafx.h выглядит следующим образом:

#pragma once
#include "targetver.h"#include <tchar.h>
#import "C:\Program Files (x86)\Microsoft Office\Office16\MSPRJ.OLB" auto_search
using namespace MSProject;

Нам не хватает шага инициализации?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]