1

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

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

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

我想阅读对文档所做的更改。

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

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

有什么想法吗?

回答:

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

4

2 回答 2

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)) 
                }
            }
        }
于 2012-04-26T13:16:20.200 回答
0

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

于 2012-10-31T14:46:15.873 回答