请教如何监控目录?搜遍网络都找不到满意的。
不是没百度或GOO过,确实没找到满意的。
找到一个WATCHDIR的源码,却只能监控到目录的变动,但找不到变动的是什么文件;
还找到API-GUIDE里的一个例子,同样只能捕捉到目录改变的事件,但无法知道是什么文件改变了,及改变了什么;
找到介绍较多的是(Windows未公开函数揭密--之三),据说用了微软的三个未公开函数的源码,那个倒好,能监控到所有事件,但却只对WINDOW有效;
此源码的主要问题是只能捕捉到WINDOWS目录下的文件变动,其核心代码如下:
m_pidlDesktop = GetPIDLFromFolderID(0, CSIDL_DESKTOP)
If m_pidlDesktop Then
ps.pidl = m_pidlDesktop
ps.bWatchSubFolders = True
'注册Windows监视,将获得的句柄保存到m_hSHNotify中
m_hSHNotify = SHChangeNotifyRegister(hWnd, SHCNF_TYPE Or SHCNF_IDLIST, _
SHCNE_ALLEVENTS Or SHCNE_INTERRUPT, _
WM_SHNOTIFY, 1, ps)
SHNotify_Register = CBool(m_hSHNotify)
Else
Call CoTaskMemFree(m_pidlDesktop)
End If
重要的是: m_pidlDesktop = GetPIDLFromFolderID(0, CSIDL_DESKTOP)只能拿到桌面的PIDL,但一直找不到获得其它目录的PIDL的途径,如果能找到应该也能解决。
请大家帮下忙。