文件更新时的Delphi通知

时间:2010-08-05 19:45:27

标签: delphi winapi shell file-io delphi-7

我的应用包含其数据库中的文档。用户可以打开文档,在这种情况下,文档会保存到临时文件夹中并在用户的计算机上打开。

我希望在更改其中一个临时文件时收到通知,并让用户将更改后的文档保存回数据库。

在Delphi7中执行此操作的最简单方法是什么? (我想它需要一些shell魔法或第三方组件)

谢谢!

4 个答案:

答案 0 :(得分:8)

您可以使用TJvChangeNotify集合中的JEDI JVCL组件检测临时文件(或任何文件)中的更改。

答案 1 :(得分:5)

你可以:

  1. 使用Win32 API SHChangeNotifyRegister函数监视临时文件夹中的更改,然后检查您的临时文件是否报告更改。

  2. 因为您知道您感兴趣的确切文件,所以您可以使用计时器或线程中的FindFirstFile直接手动监视它们的大小和时间戳。

    < / LI>

答案 2 :(得分:4)

除了RRuzRemy Lebeau写的内容:

请注意TJvChangeNotify单元中的JvChangeNotify使用FindFirstChangeNotification API调用; this是MSDN文档。请注意,这有点违反直觉:请参阅下面提到的有关如何在while循环中使用它的线程。

还有ReadDirectoryChanges API调用,该调用未包含在JCL/JVCL中,并且包含MSDN文档here,并且还有Delphi win32 example

This thread解释了两个API调用之间的差异。

- 的Jeroen

答案 3 :(得分:2)