每次用ultra edit或者Visual C++打开一个或多个文件,如果在别的编辑器中修改了某些文件,ultra edit和Visual C++就会知道这些文件被修改了,请问是如何实现的?

解决方案 »

  1.   

    //请参见如下函数的MSDN文档,我想会对你有帮助的HANDLE FindFirstChangeNotification(
      LPCTSTR lpPathName,    // directory name
      BOOL bWatchSubtree,    // monitoring option
      DWORD dwNotifyFilter   // filter conditions
    );BOOL FindNextChangeNotification(
      HANDLE hChangeHandle   // handle to change notification
    );BOOL FindCloseChangeNotification(
      HANDLE hChangeHandle   // handle to change notification
    );
      

  2.   

    提供一个建议:1、当窗口失去焦点时记下这些文件的存取时间。
    2、当窗口得到焦点时再次读取这些文件的时间,然后跟以前读的时间相比,如不一样,那证明文件被修改了。
    3、截获消息WM_ACTIVATE或者WM_NCACTIVATE可以实时检测窗口是否失去焦点。
      

  3.   

    我想,ultra edit并不是得到了通知,而是自己去查询的,要不为什么要到它获得焦点后才弹出消息呢
    我同意 BCB_FANS(四大名捕之追杀令)
      

  4.   

    我觉得Ultra Edit不应该那么笨,要是我打开了多个不同目录下的文件,而这些目录下文件很多,如果主动查询,会耗费大量的CPU和IO资源,但是好像没有这种感觉。