Word Interop应用程序将文本写入打开文档的末尾
我正在尝试编写一个C#应用程序,它将查找在MS Word中打开的文档,并使用word interop将文本写入文档末尾。这可能吗?Word Interop应用程序将文本写入打开文档的末尾
我知道有可能使用.NET Framework中内置的Process和Sendkeys来解决这个问题,但我想用Word Interop来解决这个问题,这样我就可以在路上添加更多的功能了(还有sendkeys会真的只能解决在某些特殊情况下的问题。)
谢谢!
更新:
我得到了下面的部分解决方案的工作:
Application wordApp = new Application();
wordApp.Visible = true;
wordApp.Documents.Add();
Range rng = wordApp.ActiveDocument.Range(0, 0);
rng.Text = "New Text";
但我想用字的一个已经打开的实例,而不是创建一个新的。谢谢!
更新2:
我靠近!下面的代码与UAC关闭
Application wordApp = (Word.Application)Marshal.GetActiveObject("Word.Application");
Range rng = wordApp.ActiveDocument.Range(0, 0);
rng.Text = "New Text";
但我不知道如何让它与UAC启用工作。 UAC不会导致任何错误或异常,它只是不会将文本写入打开的文档。
感谢大家帮助到目前为止,结束现在在视线:)!
更新3:
只是UAC试图再次打开和它的工作...奇怪。如果你知道任何有关interop和UAC的优秀资源,请在这里发布链接!
你看过使用来获得正在运行的应用程序,而不是创建一个新的?
肯定埃文。 Microsoft Office Interop程序集让您可以从C#中完成任何操作! SendKeys()是一个问题。
http://msdn.microsoft.com/en-us/library/15s06t57(v=vs.80).aspx
我想我应该阐述有关的SendKeys():它甚至不可靠的工作了,因为它是一个主要的黑客工具。 MS Office互操作程序集允许您为每个Office组件执行大量的操作。我已经用MS Excel广泛地使用了它们,还有一些使用了Word,并且你可以做任何用户可以编程的东西。
感谢您的帮助!按照您提供的链接,我已经到了某个地方。现在我只需要知道如何挂钩到活动词窗口(请参阅我的q更新)。你知道我可以这么做,或者你知道我在网上的一个例子,我错过了吗?再次感谢! – evan 2011-04-23 20:36:30
你可以试试下面。在这里我给出了图像插入的例子。
WordC.Application wordApp = new WordC.Application();
// create Word document object
WordC.Document aDoc = null;
object readOnly = false;
object isVisible = false;
wordApp.Visible = false;
// wordApp.DisplayAlerts = false;
//docFileName is the filename with complete path. ex c://test.doc
aDoc = wordApp.Documents.Open(docFileName, Type.Missing, ref readOnly, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, ref isVisible, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
aDoc.Activate();
aDoc.InlineShapes.AddPicture(imgFilename, Type.Missing, Type.Missing, Type.Missing);
aDoc.Save();
aDoc.Close(Type.Missing, Type.Missing, Type.Missing);
wordApp.Quit(Type.Missing, Type.Missing, Type.Missing);
谢谢!刚刚做了,似乎得到了单词的公开实例,但它没有发送文本(文本通过我的问题的更新部分中的代码发送)。这可能是UAC问题吗? (我在一个Win 7盒子上测试) – evan 2011-04-23 21:09:51
我重新启动了UAC禁用的计算机,它开始工作。然后,我在重新启用UAC后再次重新启动计算机,然后再次尝试该程序并运行。希望我能最终达到它的底部!尽管谢谢你的回答。 – evan 2011-04-23 23:19:59
您是否有特别的理由期待与UAC相关的问题?如果您的应用程序和Word都以相同的用户身份运行,我不认为会出现这种问题。 – 2011-04-24 22:28:25