Microsoft.Office.Interop.Word“无法激活应用程序”

时间:2011-03-22 17:33:59

标签: c# vsto office-interop

当尝试通过办公室互操作从我们的应用程序启动Word时,我们遇到了一些问题:

using Word = Microsoft.Office.Interop.Word;

public void ShowWord()
{
  _word = new Word.ApplicationClass();
  _word.Visible = true;
  _word.Activate();
}

如果单词并不总是打开,则抛出COM异常,指出“无法激活应用程序”。在调用Thread.Sleep(1000)之前添加_word.Activate()会阻止这种情况,但显然不是理想的。

public void ShowWord()
{
  _word = new Word.ApplicationClass();
  _word.Visible = true;
  Thread.Sleep(1000)
  _word.Activate();
}

之前有没有人见过这个,知道造成这种情况的原因以及解决这个问题的正确方法是什么?

2 个答案:

答案 0 :(得分:5)

我们遇到了类似的问题,似乎Word异常等待操作系统显示其窗口。我们解决这个问题的方法是等待Visible属性返回true:

public void ShowWord()
{
  _word = new Word.Application();
  _word.Visible = true;

  System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew();
  while (!_word.Visible && sw.ElapsedMilliseconds < 10000)
  { /* Just Wait!! (at most 10s) */}
  _word.Activate();
}

希望这有助于某人。

答案 1 :(得分:0)

您的应用程序是否有权激活Word COM对象?

签入DCOMCNFG本地激活安全要求是什么。

但是,不确定为什么Thread.Sleep(1000)允许它工作?