0

有没有办法(或 API)知道文本文件何时被编辑(由程序或人)并执行特定操作?

例如:我想在文件 c:\Users\john\free.txt 被编辑时显示一个 MessageBox。

4

4 回答 4

5

取决于你什么时候想知道它。

  • 您的应用程序是否持续运行,您是否希望尽快看到任何变化?
  • 您的应用程序是需要检查更改一次的简单命令行应用程序吗?

在第二种情况下,您可以检查文件的修改日期(如 PoweRoy 和 Michal 所建议)或使用哈希(如 PoweRoy 所建议)。

如果您的应用程序连续运行,您应该使用 FindFirstChangeNotification 和 ReadDirectoryChanges 函数。您可以在以下页面上阅读有关它的更多信息:

于 2012-04-18T10:28:06.493 回答
1

最简单:比较修改日期。但这可以被操纵。

或者对原始文件进行哈希处理并将其与当前文件进行比较。

于 2012-04-18T10:21:04.433 回答
0

GetFileTime 应该可以帮助您。

http://msdn.microsoft.com/en-us/library/ms724320%28v=vs.85%29.aspx

还有 GetFileAttributesEx。

于 2012-04-18T10:23:05.933 回答
0

检查文件的最后修改日期时间。此方法检索与给定 CFile 对象实例或给定文件路径相关的状态信息。

BOOL GetStatus(CFileStatus& rStatus) 常量;static BOOL PASCAL GetStatus(LPCTSTR lpszFileName, CFileStatus& rStatus);

参数 rStatus 对将接收状态信息的用户提供的 CFileStatus 结构的引用。CFileStatus 结构具有以下字段:

CTime m_ctime 创建文件的日期和时间。

CTime m_mtime 上次修改文件的日期和时间。

CTime m_atime 上次访问文件以进行读取的日期和时间。

ULONGLONG m_size 文件的逻辑大小(以字节为单位),由 DIR 命令报告。

BYTE m_attribute 文件的属性字节。

char m_szFullName[_MAX_PATH] Windows 字符集中的绝对文件名。

lpszFileName Windows 字符集中的字符串,它是所需文件的路径。路径可以是相对的或绝对的,也可以包含网络路径名。

返回值 如果成功获取指定文件的状态信息,则为 TRUE;否则,错误。PS:资料来自MSDN

于 2012-04-18T10:24:47.320 回答