我在表单上有一个按钮和一个文本框。当我单击按钮时,Microsoft Word启动。当用户关闭Word时,我想获取用户保存其工作的文件名以显示在文本框中。
我正在使用以下代码进行button_click:
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(@"C:\Program Files\Microsoft Office\Office12\winword.exe");
psi.RedirectStandardOutput = true;
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
psi.UseShellExecute = false;
System.Diagnostics.Process listFiles;
listFiles = System.Diagnostics.Process.Start(psi);
System.IO.StreamReader myOutput = listFiles.StandardOutput;
listFiles.WaitForExit();
if (listFiles.HasExited)
{
System.IO.FileInfo ff = new System.IO.FileInfo(myOutput.ToString());
string output = myOutput.ReadToEnd();
this.processResults.Text = output;
}
答案 0 :(得分:2)
我不相信这可以通过命令行实现。另外,要意识到,如果用户打开另一个文档,您的代码将无法完成,因为它将等到所有文档都关闭(该过程不会在此之前结束)。
话虽这么说,您应该能够使用Word / Office Interop库,并收听DocumentBeforeSave和/或DocumentBeforeClose事件。这可以让您从文档本身中提取信息,就像它被保存/关闭一样。
答案 1 :(得分:2)
我认为您不能使用当前的代码执行此操作。 ProcessStartInfo非常通用,不懂单词。
我认为您将要使用Visual Studio Tools for Office(VSTO)来启动单词。这样,您可以引用单词application和document,并可以获取文档名称。
这篇文章应该让你开始http://www.c-sharpcorner.com/UploadFile/mgold/WordFromDotNet11082005235506PM/WordFromDotNet.aspx示例代码有一个名为aDoc的对象。然后在保存之后,您可以检查aDoc.FullName以获取路径。
答案 2 :(得分:1)
我不确定是否可能,因为保存文件的名称是其他应用程序不公开的内部信息。 相反,在您使用MS Word时的特定情况下,您可以使用Word interop在应用程序中启动Word应用程序,然后处理其事件
答案 3 :(得分:0)
在所需位置创建一个空白Word文档,然后让Word加载它?