Пришлось вот писать утилиту на НЕТях.
Такая политика в конторе. Все — на .NET!
Простая вещь ставит в тупик...
Пользуясь сабж, пытаюсь открыть MHT документ.
object OpenFormat = WdOpenFormat.wdOpenFormatDocument;
_theDoc = OpenDoc(ref Source, ref OpenFormat, true);
Выбрасывает 0x800A1506. И ничего нынче не могу нагуглить по HRESULTам — прошлый век, увы моим сединам...
Тогда делаю так:
_theApp = new Application();
_theApp.Visible = true;
object Source = "C:\\Work\\Releases\\ReleaseNotes_dev.src.mht";
object OpenFormat0 = WdOpenFormat.wdOpenFormatAuto;
object OpenFormat1 = WdOpenFormat.wdOpenFormatDocument;
if (null == (_theDoc = OpenDoc(ref Source, ref OpenFormat0, true))) // exception
{
Console.WriteLine(" - failed");
if (null == (_theDoc = OpenDoc(ref Source, ref OpenFormat1, true))) // OK
Console.WriteLine(" - failed again:(");
}
И файло прекрасно открывается со 2-й попытки.
Подскажите, пожалуйста, в чём тут фокус?
PS:
С 1-го раза не открывает ни с одним возможным значением WdOpenFormat.
PPS:
OpenDoc() — всего лишь обёртка вокруг _theApp.Documents.Open(), где все параметры, кроме FileName, FileFormat и ReadOnlyRecommended == Type.Missing