写了个监控文件生成的报警程序,要每隔1-5分钟分别监控5个文件夹,看看在最近10-30分钟内有无新文件生成(每个文件夹时间限制不同,正常时每分钟都有文件生成),没有则声音提醒
之前采用wm_timer来实现,但是权限太低,运行中有些语句无法执行,监控起来不完整
现在想要重新写一个,有人推荐用多线程,有人推荐用内核setwaitabletimer,本人基础不扎实,请教各位,用什么方法比较简单实用,最好附上代码,谢谢

解决方案 »

  1.   

    自己开线程GetTickCount来计算时间达到定时的目的,到时间了。然后触发不同的线程不检测对应的目录.
      

  2.   

    HANDLE m_hTimeHandle = NULL;
    LARGE_INTEGER liDueTime;
    BOOL bResult;
    liDueTime.QuadPart = -100000000;//定时器定10秒
    m_hTimeHandle = CreateWaitableTimer(NULL, TRUE, NULL);//创建waitable timer
    bool bExit=false;
    if (SetWaitableTimer(m_hTimeHandle, &liDueTime, 0, NULL, NULL, 0))
    while(!bExit)
    {
    CFileFind finder;  
    res= finder.FindFile(("D:\\wprd\\*.*"));
    CTime time1;CTime wTime;
    CString wtime;
    while(res)
    {
    res = finder.FindNextFile();
    if (!finder.IsDirectory())
    {
    finder.GetLastWriteTime(wTime);
    if(wTime>time1)
    {
    time1=wTime;
    wtime = time1.Format("%H:%M:%S");
         }
    }
    }finder.Close();
    ::SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_TIME,wtime);
    SleepEx(5*1000,true);我这么写了一个函数行不行?
    第一次执行时文件夹里最新的修改时间是能显示了,但是5秒后再次执行就显示出空值,是循环的问题还是遍历的问题?