首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于使用c#写一个监控文件夹的钩子,在线等待 [无满意答案结贴,结贴人:gpfqweasd]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 16:08:09 楼主
    这几天公司让我写一个能够监控文件夹中文件大小变化的东东,查阅大量资料后,还有一些迷惑,特发此贴求高人指教
    先说一下需求:
    就是在当删除一个文件的时候需要钩子勾住,然后可一做一些动作 比如获取文件的大小
    在好多的论坛里看到采用钩子和finfirstchangenotification API接口相结合来实现,请问有没有具体的实例
    然后我看到好多钩子安装的方法有两种:一种是编写成独立的dll然后注册安装 另一种是使用SetWindowsHookEx api函数请问这两中方法有什么区别 文件夹监控用哪个比较好。
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 16:10:241楼 得分:0
    顶一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 16:13:142楼 得分:0
    c#有这功能,没有这么麻烦
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • noky
    • 等级:
    发表于:2008-05-14 16:13:323楼 得分:0
    为什么要使用钩子呢,用 FileSystemWatcher不就行了吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 16:15:094楼 得分:0
    FileSystemWatcher
    用这个就可以了
    FileSystemWatcher watcher = new FileSystemWatcher("D:\\test");
                watcher.Deleted += new FileSystemEventHandler(watcher_Deleted);
     

            void watcher_Deleted(object sender, FileSystemEventArgs e)
            {
                //todo;
            }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 16:19:485楼 得分:0
    引用 4 楼 ericzhangbo1982111 的回复:
    FileSystemWatcher
    用这个就可以了
    FileSystemWatcher watcher = new FileSystemWatcher("D:\\test");
                watcher.Deleted += new FileSystemEventHandler(watcher_Deleted);
       

            void watcher_Deleted(object sender, FileSystemEventArgs e)
            {
                //todo;
            }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 16:20:006楼 得分:0
    不要用钩子。你可以用FileSystemWatcher,你先看看这篇微软文章:

    Introduction to Monitoring File System Events
    http://msdn.microsoft.com/en-us/library/ch2s8yd7(VS.71).aspx
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • net0003
    • 等级:
    发表于:2008-05-14 16:21:017楼 得分:0
    学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 16:23:438楼 得分:0
    fileSystemWatcher
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 17:11:289楼 得分:0
    这个只是删除后才触发事件吧,已经删出了也无法得到文件的大小啊?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 22:58:2410楼 得分:0
    根据你的需求,你必须使用全局钩子,即HHOOK SetWindowsHookEx(WH_SHELL,HOOKPROC lpfn,HINSTANCE hMod,0);
    WH_SHELL表明你监听shell事件,lpfn钩子函数(单独的标准dll文件中),hMod钩子函数所在动态库的模块句柄,0表明是系统钩子。
    msdn中搜索SetWindowsHookEx,里边有详细的说明,你也可以到VC/DLL和进程里边问。
    特别说明,C#无法写标准dll。但是C#可以调用标准dll.
    强烈建议用VC编写。

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 23:14:5311楼 得分:0
    楼主别忘了把答案贴上来啊,让我们也学习学习,谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-15 10:08:0412楼 得分:0
    那vc 写标准的dll主要实现一些什么啊 SetWindowsHookEx 又在什么时候用啊?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-15 10:19:5013楼 得分:0
    顶,我也想学点这方面的知识!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-15 10:27:3114楼 得分:0
    ,。。用comimport
    实现
    ICopyHook接口吧。

    具体代码....我环境没有资料,自己google一下吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-15 10:36:0315楼 得分:0
    我看了一写ICopyHook的资料,写完之后怎么用啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-15 10:57:5716楼 得分:0
    学习
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved