文件更新时的Delphi通知

Ste*_*eve 7 delphi shell file-io winapi delphi-7

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

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

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

谢谢!

RRU*_*RUZ 8

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

  • 我不想使用任何JVCL组件,因为我发现它们有点像马车.不要谈论必须安装gazilion组件只是为了拥有你真正需要的那个...... (3认同)

Rem*_*eau 6

你可以:

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

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


Jer*_*ers 5

除了RRuzRemy Lebeau所写的内容:

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

还有ReadDirectoryChangesAPI 调用,它没有被JCL/JVCL包装,这里有 MSDN 文档,还有一个Delphi win32 示例

此线程解释了两个 API 调用之间的差异。

--杰罗恩