Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从程序退出到重新启动,如何及时监控windows中的目录?_C++_Windows_Monitor - Fatal编程技术网

C++ 从程序退出到重新启动,如何及时监控windows中的目录?

C++ 从程序退出到重新启动,如何及时监控windows中的目录?,c++,windows,monitor,C++,Windows,Monitor,我为windows系统编写了一个音乐播放器。 我添加了一个模块来监视一个名为“媒体库”的目录。 它现在可以在播放器运行时读取该目录中音乐文件的更改(添加、删除、更改名称…。 当程序退出时,它显示为“自动播放列表”,并将这些文件的信息保存到配置文件中 它现在工作正常,但有一个缺陷 程序未运行时,我无法获取更改。 再次扫描媒体库的目录不是一个好主意,它可能包含大量的文件项 那么还有别的方法吗? 顺便说一句,它被放在了 以下两个功能可能有用 创建更改通知句柄并设置初始更改通知筛选器条件。当指定目录或

我为windows系统编写了一个音乐播放器。
我添加了一个模块来监视一个名为“媒体库”的目录。
它现在可以在播放器运行时读取该目录中音乐文件的更改(添加、删除、更改名称…。
当程序退出时,它显示为“自动播放列表”,并将这些文件的信息保存到配置文件中

它现在工作正常,但有一个缺陷

程序未运行时,我无法获取更改。
再次扫描媒体库的目录不是一个好主意,它可能包含大量的文件项

那么还有别的方法吗?

顺便说一句,它被放在了

以下两个功能可能有用

创建更改通知句柄并设置初始更改通知筛选器条件。当指定目录或子树中发生与筛选条件匹配的更改时,通知句柄的等待成功。函数不报告对指定目录本身的更改


检索描述指定目录内更改的信息。该函数不报告对指定目录本身的更改。

以下两个函数可能有用

创建更改通知句柄并设置初始更改通知筛选器条件。当指定目录或子树中发生与筛选条件匹配的更改时,通知句柄的等待成功。函数不报告对指定目录本身的更改


检索描述指定目录内更改的信息。该函数不报告对指定目录本身的更改。

以下两个函数可能有用

创建更改通知句柄并设置初始更改通知筛选器条件。当指定目录或子树中发生与筛选条件匹配的更改时,通知句柄的等待成功。函数不报告对指定目录本身的更改


检索描述指定目录内更改的信息。该函数不报告对指定目录本身的更改。

以下两个函数可能有用

创建更改通知句柄并设置初始更改通知筛选器条件。当指定目录或子树中发生与筛选条件匹配的更改时,通知句柄的等待成功。函数不报告对指定目录本身的更改


检索描述指定目录内更改的信息。该函数不报告对指定目录本身的更改。

所有现代文件系统都允许您获取有关上次修改文件的日期和时间的信息(对于目录,这意味着我们可以获取上次修改目录内容的日期和时间)。因此,使用此信息可以显著提高重新扫描操作的速度

其思想很简单:在重新扫描时,如果自上次重新扫描后目录未更改,则可以忽略目录及其所有子目录。若要获取有关上次修改目录的信息,可以使用函数


使用
FindFirstChangeNotification()
ReadDirectoryChanges()
函数并从登录时开始的第二个进程的想法(Ben键的想法)也很好。但我怀疑您已经实现了重新扫描功能,所以提高它的速度听起来是个好主意。因此,我建议您尝试使用
GetFileTime()
优化重新扫描。

所有现代文件系统都允许您获取有关上次修改文件的日期和时间的信息(对于目录,这意味着我们可以获取上次修改目录内容的日期和时间)。因此,使用此信息可以显著提高重新扫描操作的速度

其思想很简单:在重新扫描时,如果自上次重新扫描后目录未更改,则可以忽略目录及其所有子目录。若要获取有关上次修改目录的信息,可以使用函数


使用
FindFirstChangeNotification()
ReadDirectoryChanges()
函数并从登录时开始的第二个进程的想法(Ben键的想法)也很好。但我怀疑您已经实现了重新扫描功能,所以提高它的速度听起来是个好主意。因此,我建议您尝试使用
GetFileTime()
优化重新扫描。

所有现代文件系统都允许您获取有关上次修改文件的日期和时间的信息(对于目录,这意味着我们可以获取上次修改目录内容的日期和时间)。因此,使用此信息可以显著提高重新扫描操作的速度

其思想很简单:在重新扫描时,如果自上次重新扫描后目录未更改,则可以忽略目录及其所有子目录。若要获取有关上次修改目录的信息,可以使用函数


使用
FindFirstChangeNotification()
ReadDirectoryChanges()
函数并从登录时开始的第二个进程的想法(Ben键的想法)也很好。但我怀疑您已经实现了重新扫描功能,所以提高它的速度听起来是个好主意。因此,我建议您尝试使用
GetFileTime()
优化重新扫描。

所有现代文件系统都允许您获取有关上次修改文件的日期和时间的信息(对于目录,这意味着我们可以获取上次修改目录内容的日期和时间)