hur.cn - 华软网

 热门搜索

监视目录的问题

  作者:未知    来源:网络    更新时间:2011/5/25
用下面的代码监视目录中文件的改变:

DWORD dwWaitStatus;
HANDLE dwChangeHandle=NULL;
CString dir=L"cfg";

dwChangeHandle=FindFirstChangeNotification(
dir,false, FILE_NOTIFY_CHANGE_ATTRIBUTES|FILE_NOTIFY_CHANGE_LAST_WRITE
|FILE_NOTIFY_CHANGE_LAST_ACCESS|FILE_NOTIFY_CHANGE_DIR_NAME);

if(dwChangeHandle==INVALID_HANDLE_VALUE)
{
MessageBox(NULL, L"FindFirstChangeNotification failed!", 0, 0);
}

while(1)
{
//dwWaitStatus=WaitForMultipleObjects(1, &dwChangeHandle, true, INFINITE);
dwWaitStatus=WaitForSingleObject(dwChangeHandle, INFINITE);
switch(dwWaitStatus)
{
case WAIT_OBJECT_0:
MessageBox(NULL, L"Dir changed!", NULL, 0);
if(FindNextChangeNotification(dwChangeHandle)==FALSE)
{
MessageBox(NULL, L"FindNext failed!", 0, 0);
}
break;
default:
break;
}
}
当我用同名的文件覆盖被监控目录cfg的文件时,可以检测到改变,但是"Dir changed"对话框却弹出来两次,这个是怎么回事?
---华软 网友回答---
http://www.codeproject.com/KB/files/directorychangewatcher.aspx
不妨参考一下
---华软网友回复---
引用 1 楼 visualeleven 的回复:
http://www.codeproject.com/KB/files/directorychangewatcher.aspx
不妨参考一下

谢谢。

dwChangeHandle=FindFirstChangeNotification(
dir,false, FILE_NOTIFY_CHANGE_LAST_ACCESS);
修改成这样就可以了。估计文件覆盖引起上面的两个filter都捕捉到了改变。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。