【问题标题】:Start Word Process, but file name is changed启动字处理,但文件名已更改
【发布时间】:2012-04-26 13:12:52
【问题描述】:

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

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

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

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

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

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

有什么想法吗?

回答:

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

【问题讨论】:

    标签: c# ms-word


    【解决方案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)) 
                    }
                }
            }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多