观看文件夹和子文件夹以进行文件更改,这不是检测更改
Watching folders and subfolders for file changes is not detecting changes
我想做的事情:监视给定文件夹及其所有子文件夹,以了解其文件concontents的任何更改(在Windows,使用C 中(。
我尝试的是:
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
void WatchFileChanges(char *dir) {
while (true)
{
HANDLE dwChangeHandles[1];
dwChangeHandles[0] = FindFirstChangeNotification(
dir, // directory to watch
FALSE, // do not watch subtree
FILE_NOTIFY_CHANGE_LAST_WRITE); // watch file name changes
auto res = WaitForSingleObject(dwChangeHandles, INFINITE);
switch (res)
{
case WAIT_OBJECT_0: std::cout << "changed" << std::endl; break;
case WAIT_TIMEOUT: std::cout << "time's up" << std::endl; break;
}
}
}
int main()
{
WatchFileChanges("D:/myfolder");
return 0;
}
我运行上述代码,然后尝试对位于" d:/myFolder"文件夹中的文件进行更改(并保存(更改。但是,我的程序中什么都没有发生。根本没有显示消息,而我希望显示"更改"。
我在做什么错?
当我有问题时,我会做某些事情。我经常添加代码,这些代码在事物可能出错时会撰写相关信息;不是当我期望某件事出现问题时,而是可以出现问题时。因此,我测试了您的代码,i 自动向交换机添加了一个默认值。我的输出是默认情况下的输出的完整,我假设表示WaitforsingleObject的故障。因此,我注意到您正在使用dwchangehandles [0],以进行findfirstchangenotification和waitforsingleobject中的findfirstchangenotification和dwchangehandles。当我将dwchangehandles更改为dwchangehandhandles [0],然后对我有用。
有时我们忽略了简单,因为我们希望它很困难。
相关文章:
- 如何识别项目是 QT 中的文件还是文件夹
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- 如何检测文件夹是否太重,如果是,请删除其中的一部分
- c++ 提升如果 .extension() == " "这意味着这个文件是一个文件夹?
- 如何确定文件或文件夹是在SSD还是硬盘驱动器上?
- 观看文件夹和子文件夹以进行文件更改,这不是检测更改
- 在不同于依赖DLL的文件夹中输出已编译目标的正确方法是什么
- 在 C 预处理器中指定一个文件夹/目录的正确方法是什么?
- Win7 命名空间扩展确定 IShellItem 是文件还是文件夹
- 打开文件对话框如何选择多个文件而不是文件夹
- 为什么必须在 Linux 系统上"installed" uuid.h 才能构建许多C++程序,而不仅仅是放入 include 或 lib 文件夹
- C++/Visual Studio - _wgetcwd返回项目文件夹而不是应用程序
- SHGetFolderPath 已弃用:检索 Windows 文件夹路径的替代方法是什么
- 文件夹中的Windows应用商店部署文件,而不是MSI
- 在 c++ 中,知道路径是否引用文件夹或文件的最便宜的方法是什么?
- CMake链接不是子文件夹
- 为什么在c++中用shell链接查找快捷方式的目标路径时,它指的是windowsinstaller文件夹
- 如何判断文件夹是否是递归文件夹复制的子文件夹
- 如何判断文件夹是否是特殊Windows文件夹的子文件夹
- MSVC10 /MP不是在项目中跨文件夹构建多核的