VC++文件监控之ReadDirectoryChangesW-创新互联
我这里只介绍采用ReadDirectoryChangesW对文件目录实施监控
关键代码
CfgdsgDlg * dlg = (CfgdsgDlg*)lparam; HANDLE hDir; char notify[1024]; DWORD cbBytes,i; char AnsiChar[3]; wchar_t UnicodeChar[2]; CString path; FILE_NOTIFY_INFORMATION *pnotify=(FILE_NOTIFY_INFORMATION *)notify; FILE_NOTIFY_INFORMATION *tmp; GetCurrentDirectory(MAX_PATH,path.GetBuffer(MAX_PATH+1)); hDir = CreateFile( path, FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, NULL); if (hDir == INVALID_HANDLE_VALUE) { dlg->m_edit.ReplaceSel("hDir:INVALID_HANDLE_VALUE\r\n"); return 0; } while (TRUE) { if(ReadDirectoryChangesW(hDir, ¬ify, sizeof(notify), FALSE, FILE_NOTIFY_CHANGE_FILE_NAME| FILE_NOTIFY_CHANGE_LAST_WRITE, &cbBytes, NULL, NULL)) { tmp = pnotify; switch(tmp->Action) { case FILE_ACTION_ADDED: dlg->m_edit.ReplaceSel("Directory/File added (添加文件)- \r\n"); break; case FILE_ACTION_REMOVED: dlg->m_edit.ReplaceSel("Directory/File removed (删除文件)- \r\n"); break; case FILE_ACTION_MODIFIED: dlg->m_edit.ReplaceSel("Directory/File modified (修改文件内容)- \r\n"); break; case FILE_ACTION_RENAMED_OLD_NAME: dlg->m_edit.ReplaceSel("Directory/File old name (修改文件名字)- \r\n"); break; case FILE_ACTION_RENAMED_NEW_NAME: dlg->m_edit.ReplaceSel("Directory/File new name - \r\n"); break; default: break; } } }
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站栏目:VC++文件监控之ReadDirectoryChangesW-创新互联
本文来源:http://azwzsj.com/article/dscedc.html