跪求大神!文件监控问题。悬赏分不是问题。
1.指定一个文件之后,对该文件进行监控。对文件的复制、移动、剪切、删除、重命名和从回收站恢复都能有所反应。例如:复制记录下源地址和目标地址。
2.指定一个文件夹之后,对该文件夹的所有文件监控。
3.肯定要用windows service实现。
4.对文件的监控操作既包括用户的操作(clipboard)以及其他程序的操作。
现在求技术思路,不需要大段代码。
[解决办法]
监控浏览器窗口,可以获取浏览器的窗口句柄
每隔一段时间检查一次,比如100ms
一旦发现该句柄存在,说明浏览器被开启
那就定时间获取地址栏信息,一旦和指定地址一样,就截断键盘鼠标操作
系统的每一种窗口都有句柄的,跟踪可以解决这些问题
[解决办法]
如果不用shell方式,可以用下文的方法
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365261(v=vs.85).aspx
Obtaining Directory Change Notifications
[解决办法]
这么多要求,基本上需要到驱动那一层了,可以参考Microsoft process Monitor等
[解决办法]
vb.net 下 好像有个FileWatching的东西。
http://hi.baidu.com/mbccie/item/cc6335e5314d4b394cdcaf72
帮你搜了下。
另怕你不熟悉vb
又搜了下
vc的但是这个我不知道对不对
你看看先
http://www.pudn.com/downloads116/sourcecode/windows/detail494882.html
[解决办法]
shell的方式确实容易,但楼主的第三个条件(以service方式运行)一票否决了这种方式,因为服务程序没有桌面,也没有SHELL。
[解决办法]
The file was renamed, and this is the new name. If the old name resides within the directory being monitored, the client will also receive the FILE_ACTION_RENAME_OLD_NAME. If the old name resides outside of the directory being monitored, the client will not receive the FILE_ACTION_RENAME_OLD_NAME.
文件刚被更名, 这是新名字。如果旧名字在被监视的目录中,客户端会同时收到FILE_ACTION_RENAME_OLD_NAME。如果旧名字不在被监视的目录中,客户端不会收到FILE_ACTION_RENAME_OLD_NAME。
[解决办法]
简单点可以直接用api实现,楼主查:
ReadDirectoryChangesW
还有:
FindFirstChangeNotification
如果要复杂的就是文件过滤驱动了
[解决办法]
[解决办法]
FILE_ACTION_RENAMED_OLD_NAME 消息当前得到的FILE_NOTIFY_INFORMATION 地址加上他的成员 NextEntryOffset得到下一个记录,这个记录好像是FILE_ACTION_RENAMED_NEW_NAME 你在获取它的
FILE_NOTIFY_INFORMATION 从中获取新的文件名
[解决办法]
这个真是有难度的问题,关注!
,用单一的实现方式来说可能不会很完整,要完整做到恐怕还真是驱动层了。