首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

跪求大神!文件监控有关问题。悬赏分不是有关问题

2012-07-28 
跪求大神!文件监控问题。悬赏分不是问题。1.指定一个文件之后,对该文件进行监控。对文件的复制、移动、剪切、删

跪求大神!文件监控问题。悬赏分不是问题。
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

如果要复杂的就是文件过滤驱动了
[解决办法]

探讨

谢谢8楼和11楼,但是请恕我愚昧。到底是采用文件过滤驱动的方式还是Windows Shell 扩展编程的方式好一些呢?这两个有什么区别呢?因为我不太确定这两个技术到底哪个比较合适而且风险较小。

[解决办法]
FILE_ACTION_RENAMED_OLD_NAME 消息当前得到的FILE_NOTIFY_INFORMATION 地址加上他的成员 NextEntryOffset得到下一个记录,这个记录好像是FILE_ACTION_RENAMED_NEW_NAME 你在获取它的
FILE_NOTIFY_INFORMATION 从中获取新的文件名
[解决办法]
这个真是有难度的问题,关注!
,用单一的实现方式来说可能不会很完整,要完整做到恐怕还真是驱动层了。

热点排行