微软文字自动化
Microsoft word automation
我们有一个 UWP 应用程序,我们希望有以下场景:
- 打开 Microsoft word 中的文档
- 编辑文档
- 关闭文档并将数据获取到我们的应用程序。
我们有一个 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);
}
}
有可能通过微软提供的称为桌面桥的技术进行对应。这是一个解释。很简单,就是将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
既然WordAPI的定义在下面,看来可以像上面那样使用
我们有一个 UWP 应用程序,我们希望有以下场景:
- 打开 Microsoft word 中的文档
- 编辑文档
- 关闭文档并将数据获取到我们的应用程序。
我们有一个 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);
}
}
有可能通过微软提供的称为桌面桥的技术进行对应。这是一个解释。很简单,就是将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
既然WordAPI的定义在下面,看来可以像上面那样使用