启动Word Process,但文件名已更改

时间:2012-04-26 13:12:52

标签: c# ms-word

在C#中,我在名为“MyDoc.docx”的临时文件夹中创建了一个文件

然后我用这个文件启动Word进程。

使用FileSystemWatcher我监视文件更改,并且还监视Word进程何时退出。

我想阅读文件所做的更改。

但是,Word使用的文件名与我提供的文件名不同。它使用短(8.3)文件名。但是,它没有使用我计算的短文件名应该是 - 似乎Word正在使用它自己的临时文件名。

如何确定我的文件已更改?我怎么知道Word正在使用的文件的名称?

有什么想法吗?

解答:

不应处理Word文件的已更改事件,而应处理重命名的事件。当Word保存其文档时,它会保存其临时文件,然后将其复制到原始文件名。

2 个答案:

答案 0 :(得分:1)

Word总是将他的临时文件放到“C:\ Users \ Alex \ Desktop”(Windows Server 2008除外),这样你就可以找到它们了

var files = new DirectoryInfo(@"C:\Users\Alex\Desktop").GetFiles()
.Where(arg => !(arg.Attributes.HasFlag(FileAttributes.Hidden) && arg.Extension == ".docx" && arg.Name.StartsWith("~$")))
.ToList();

修改

试试这个

        Process[] processes = Process.GetProcesses();
        int i = 0;
        foreach (Process p in processes)
        {
            if (p.ProcessName.Contains("WinWord"))
            {
                try
                {
                    ProcessModuleCollection modules = p.Modules;
                    for (int j = 0; j <= modules.Count - 1; j++)
                    {
                        string sFile = modules[j].FileName;//can be needed file
                    }
                }
                catch (Exception exception)
                {
                    //MsgBox(("Error : " & exception.Message)) 
                }
            }
        }

答案 1 :(得分:0)

不应处理Word文件的已更改事件,而应处理重命名的事件。当Word保存其文档时,它会保存其临时文件,然后将其复制到原始文件名。