我正在部署使用C#在Visual Studio 2008中创建的Outlook 2007加载项。我创建了一个从word文档中提取文本的函数。为什么word作为后台进程通过outlook addin偷取焦点?
问题是,大约20%的时间,这将暂时抓住焦点,并把它给我的插件。我坐着观看sysinternal的进程资源管理器大约10分钟,而我的加载项正在运行,并且仅在进程运行超过2秒时才发生。 WINWORD程序关闭后 - 重点将恢复到之前的任何程序。
有没有人知道为什么WINWORD进程会代表我的加载项窃取重点以及如何避免它?
public static string ExtractWordDocument(object filename)
{
Word.Application wordApp = new Word.Application();
string content = null;
Word.Document doc = null;
try
{
doc = wordApp.Documents.OpenNoRepairDialog(
ref filename,
ref officeObjects.Negative,
ref officeObjects.ReadOnly,
ref officeObjects.Negative,
ref officeObjects.Nullobj,
ref officeObjects.Nullobj,
ref officeObjects.Nullobj,
ref officeObjects.Nullobj,
ref officeObjects.Nullobj,
ref officeObjects.Nullobj,
ref officeObjects.Nullobj,
ref officeObjects.Negative,
ref officeObjects.Negative,
ref officeObjects.Nullobj,
ref officeObjects.Nullobj,
ref officeObjects.Nullobj);
content = doc.Content.Text;
}
catch (Exception exc)
{
Util.Log("Error processing word document - Exception received: " + exc.ToString());
}
if (doc != null)
{
((Word._Document)doc).Close(ref officeObjects.SaveChanges, ref officeObjects.OriginalFormat, ref officeObjects.RouteDocument);
}
((Word._Application)wordApp).Quit(ref officeObjects.SaveChanges, ref officeObjects.OriginalFormat, ref officeObjects.RouteDocument);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(wordApp);
doc = null;
wordApp = null;
return content;
}
不准。根本不会改变行为。 – McAden 2009-08-13 23:23:20