原因:
因為ReadDirectoryChangesW 上次測試發現不能多級目錄監控,
所以嘗試用FindFirstChangeNotification來實施文件監控。
關鍵代碼:
CFolderMonitorDlg *dlg = (CFolderMonitorDlg*)lParam;   HANDLE hEvent;//監控句柄  CString path ;//監控目錄  GetCurrentDirectory(MAX_PATH,path.GetBuffer(MAX_PATH+1));  hEvent = FindFirstChangeNotification(path,TRUE,FILE_NOTIFY_CHANGE_FILE_NAME| //查看指定目錄下任何文件名的改變                          FILE_NOTIFY_CHANGE_DIR_NAME|  //查看指定目錄下任何目錄名的改變                          FILE_NOTIFY_CHANGE_SIZE|    //查看指定文件大小的改變                          FILE_NOTIFY_CHANGE_ATTRIBUTES);//查看指定目錄下文件屬性的改變      if (hEvent == INVALID_HANDLE_VALUE)  {    ExitProcess(GetLastError());//獲取錯誤    return 0 ;  }  while (TRUE)//循環監控  {         DWORD nObj = WaitForSingleObject(hEvent,INFINITE);//等待,文件夾任何動作,都返回0,顧不能知道具體動作和具體哪個文件發生了變化    if (nObj)    {      dlg->m_edit.ReplaceSel("被病毒修改了文件/r/n");    }         dlg->m_edit.ReplaceSel("文件發生了變化,具體發生什么變化,無從考證/r/n");         //繼續監控    if(FALSE==FindNextChangeNotification(hEvent))    {      ExitProcess(GetLastError());      return 0;    }  }   return 0 ;效果圖:

最后:
因為代碼很少,就不介紹了。
| 
 
 | 
新聞熱點
疑難解答
圖片精選