Microsoft Word自动化

时间:2018-08-31 14:06:03

标签: c# uwp ms-word com

我们有一个UWP应用程序,我们希望有以下情形:

  1. 从文档中打开Microsoft Word
  2. 编辑文档
  3. 关闭文档并将数据发送到我们的应用程序。

我们有一个Silverlight应用程序,该应用程序使用下面的代码并很好地解决了问题。我们可以在UWP中做类似的事情吗?以编程方式打开Word并等待实例关闭。

  private void SetupWordInstance(bool visible = true)
    {
        if (AutomationFactory.IsAvailable)
        {
            _wordApp = null;

            try
            {
                _wordApp = AutomationFactory.CreateObject("Word.Application");
                _wordVersion = _wordApp.Version;
            }
            catch
            {
                try
                {
                    _wordApp = AutomationFactory.CreateObject("Word.Application");
                    _wordVersion = _wordApp.Version;
                }
                catch (Exception)
                {
                    Utils.ShowMessage(Resource.MissingWordApplicationErrorMessage);
                }
            }

            if (_wordApp != null)
            {
                AutomationEvent beforeCloseEvent = AutomationFactory.GetEvent(_wordApp, "DocumentBeforeClose");
                beforeCloseEvent.AddEventHandler(new BeforeCloseAppDelegate(BeforeCloseApp));

                AutomationEvent quitEvent = AutomationFactory.GetEvent(_wordApp, "Quit");
                quitEvent.AddEventHandler(new QuitAppDelegate(QuitApp));

                if (visible)
                {
                    _wordApp.Visible = true;
                    _wordApp.Activate();
                    FocusWordInstance();
                }
            }
        }
        else
        {
            Utils.ShowMessage(Resource.MissingAutomationErrorMessage);
        }
    }

1 个答案:

答案 0 :(得分:0)

它有可能与Microsoft提供的称为桌面网桥的技术相对应。这是一个解释。轻松提取UWP中不可用的Windows桌面功能,并将其与应用程序一起提供。

Docs/Windows/UWP/Develop/Porting apps to Windows 10/Desktop Bridge

以下是使用Excel时的示例。

Desktop app bridge to UWP Samples

UWP calling Office Interop APIs

Windows Application Packaging Project Samples

Excel.Interop

由于下面是Word API的定义,因此看来可以像上面那样使用它。

Microsoft.​Office.​Interop.​Word Namespace