我正在开发一个 windows 应用程序来补充我们的 web 应用程序,它是一个像 dropbox 这样的小型文档管理系统,我必须在它关闭时自动同步文件,例如,如果通过我的应用程序打开一个 .dwg (AUTOCAD) 文件,一个事件应该在该特定文件的关闭时触发,Filesystemwatcher
类是否可能?问题是在 AUTOCAD 中文件作为选项卡打开,我知道我们可以在带有互操作库的 MS Office 应用程序中执行此操作。我们如何为 AUTOCAD 和 Photoshop 等应用程序做同样的事情?
3 回答
尝试使用FileSystemWatcher 的 Changed事件。像这样的东西:
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName;
// Only watch AutoCAD files.
watcher.Filter = "*.dwg";
watcher.Changed += new FileSystemEventHandler(OnChanged);
在 AutoCAD 中,您还可以使用其 .NET API 开发插件(就像 MS Office 一样)。
关闭文档(是否保存)时会触发 DocumentCollection.DocumentDestroyed 事件:http: //docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer的%20Guide/index .html?url=WS1a9193826455f5ff2566ffd511ff6f8c7ca-4875.htm
或者您可以使用 Database.SaveComplete 事件
无论如何,这将需要一个运行 AutoCAD 的应用程序,如果您跟踪文件(FileSystemWatcher)应该更容易。
供 AutoCAD 使用FileSystemWatcher
,以监视正在创建和删除的 .dwl 文件。该文件具有有关谁打开文件以及何时打开的元数据。当文件关闭并释放锁时,它会被删除。更高版本也有一个 .dwl2 文件。需要注意的事项 - 如果 AutoCAD 崩溃,它可能会被抛在后面。
我不记得它是否是在以只读方式打开文件时创建的,但在这种情况下无论如何都不需要同步它。