当尝试通过办公室互操作从我们的应用程序启动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();
}
之前有没有人见过这个,知道造成这种情况的原因以及解决这个问题的正确方法是什么?
答案 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)
允许它工作?