Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Как исключить сбой программы c Microsoft.Office.Interop.Word (http://forum.oszone.net/showthread.php?t=335093)

tumanovalex 29-05-2018 19:53 2816097

Как исключить сбой программы c Microsoft.Office.Interop.Word
 
В программе работаю с Word и использую
Код:

using Word = Microsoft.Office.Interop.Word
и ссылку на Microsoft Word 12.0 Object Library. Можно ли сделать так, чтобы при отсутствии на ПК установленного Word (например, при использовании другого редактора типа LibreOffice) программа завершалась с сообщением, что нужно установить Word? Я попробовал на ПК без Word программу:
Код:

using System;
using Word = Microsoft.Office.Interop.Word;
using System.Collections.Generic;

namespace CsWordTest
{

  public class Program
  {

    private static void ShowMesError(string strMes)
    {
      Console.WriteLine(strMes);
      Console.WriteLine("\nПрограмма завершила работу. Нажмите любую клавишу");
      Console.ReadKey();
      Environment.Exit(1);
    }


    static void Main(string[] args)
    {
      string cyrDir = Environment.CurrentDirectory;
      string[] strDocFileName = Directory.GetFiles(cyrDir, "*.do*", SearchOption.AllDirectories);
      if (strDocFileName.Length > 1)
      {
        ShowMesError("Рядом с программой должен быть один файл с расширением doc или docx!");
      }
      if (strDocFileName.Length == 0)
      {
        ShowMesError("Рядом с программой нет файла с расширением doc или docx!");
      }
      Object missing = System.Reflection.Missing.Value;
      Object confConv = false;
      Object readOnly = true;
      Object isVisible = false;
      Object saveChanges = false;
      Object filename = strDocFileName[0];
      try
      {
        Word.Application word = new Word.Application();
        Word.Document doc = new Word.Document();
        doc = word.Documents.Open(ref filename, ref confConv, ref readOnly);
        word.Visible = false;
        Console.WriteLine("Работа с документами doc и docx возможна!");
        ((Word._Document)doc).Close(ref saveChanges, missing, missing);
        ((Word._Application)word).Quit(ref saveChanges);     
      }
      catch (Exception)
      {
        ShowMesError("Работа с документами doc и docx невозможна! Наверное, на ПК не установлен Microsoft Word!");
        throw;
      }
      Console.WriteLine("\nПрограмма завершила работу. Нажмите любую клавишу!");
      Console.ReadKey();
    }

  } // class Program
} // namespace CsWordTest

программа завершилась аварийно. Проект прикрепил.


Время: 18:45.

Время: 18:45.
© OSzone.net 2001-