在C#中,我在名为“MyDoc.docx”的临时文件夹中创建了一个文件
然后我用这个文件启动Word进程。
使用FileSystemWatcher我监视文件更改,并且还监视Word进程何时退出。
我想阅读文件所做的更改。
但是,Word使用的文件名与我提供的文件名不同。它使用短(8.3)文件名。但是,它没有使用我计算的短文件名应该是 - 似乎Word正在使用它自己的临时文件名。
如何确定我的文件已更改?我怎么知道Word正在使用的文件的名称?
有什么想法吗?
解答:
不应处理Word文件的已更改事件,而应处理重命名的事件。当Word保存其文档时,它会保存其临时文件,然后将其复制到原始文件名。
答案 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保存其文档时,它会保存其临时文件,然后将其复制到原始文件名。