我的应用程序包含数据库中的文档。用户可以打开这些文档,此时文档将保存到临时文件夹并在用户的计算机上打开。
我想在这些临时文件被更改时获得通知,并向用户提供将更改后的文档保存回数据库的选项。
在Delphi7中,最简单的方法是什么?(我认为需要一些shell技巧或第三方组件)
谢谢!
TJvChangeNotify
组件和JEDI JVCL集合。您可以选择:
使用Win32 API的SHChangeNotifyRegister函数来监视临时文件夹中的更改,然后让回调函数检查您的临时文件是否报告了更改。
由于您知道您感兴趣的确切文件,因此可以在定时器或线程中使用FindFirstFile直接监视它们的大小和时间戳的更改。
除了RRuz和Remy Lebeau所写的内容:
请注意,在JvChangeNotify
单元中,TJvChangeNotify
使用了FindFirstChangeNotification
API调用; 这里是MSDN文档。请注意,它有点违反直觉:请参阅下面提到的线程,了解如何在while循环内使用它。
还有一个名为ReadDirectoryChanges
的API调用,它没有被JCL/JVCL包装,MSDN文档在这里,同时也有一个Delphi win32示例。
这个线程解释了这两个API调用之间的区别。
--jeroen
在主窗体的Create过程中,添加以下代码:
var rJvChangeItem:= JvChangeNotify1.Notifications[0];
rJvChangeItem.Directory:= [the folder you want to monitor - string];
JvChangeNotify1.Active:= True;