一个问题(大致是关于监听目录),不知如何下手,敬请各位提点建设性的意见,秀秀你们的功力,不胜感激!
要求如下:
任意指定一个目录,使其成为一个特殊的目录,使move或者paste到该目录下的文件或者目录是自动修改过的。比如说拖一个文件到该目录,拖过来的不是文件的原样copy,而是经过我们写的程序处理过的结果文件。
不知如何下手,请各位支招,谢谢了
[解决办法]
先取指定目录下的文件名,保存。然后监视该目录,文件名列表有变更时把新增加的文件提取出来处理。
是否可行?
[解决办法]
FileSystemWatcher
[解决办法]
是不是全局Hook的内容了,你找一下这方面的东西.
[解决办法]
windows有一个API可以做到监视文件夹的变化的,不过我没用过,只能帮你UP了
[解决办法]
学习
[解决办法]
帮顶
[解决办法]
用.net自带的FileSystemWatcher组件来监听文件夹
但要做到自动更改文件,可能还得写些更底层的操作吧!
[解决办法]
监控文件夹 改变FileSystemWatcher 可以做到
不过 中途修改 内容 可能需要获取 剪切板里的内容吧
取到里面的文件源 然后你去读取文件源 修改后再写入进去.
[解决办法]
using System;
using System.IO;
using System.Data;
namespace fileWatch
{
/// <summary>
/// FileWatcher 的摘要说明。
/// </summary>
public class FileWatcher
{
FileSystemWatcher watcher ;
string watchPath;
public FileWatcher(string fileFrom)
{
watchPath=fileFrom; // the watch path
}
private void OnCreated(object source, FileSystemEventArgs e)
{
// the file e.FullPath which to change
// do what you want
}
public void start()
{
watcher= new FileSystemWatcher();
watcher.Path=watchPath;
watcher.NotifyFilter=NotifyFilters.LastWrite|NotifyFilters.LastAccess;
watcher.Changed += new FileSystemEventHandler(OnCreated);
watcher.EnableRaisingEvents=true;
}
public void stop()
{
watcher.EnableRaisingEvents=false;
watcher.Dispose();
}
}
}
//这样简单写写 就恩能够捕捉到在start后 目录内文件的修改,包括新增加文件(有些特殊文件似乎捕捉不到)
//我能想到的最直接办法就是文件移动后 修改这个文件(OnCreated方法中),而不是修改后在移动这个文件
//希望有帮助
[解决办法]
FileSystemWatcher
[解决办法]
http://chs.gotdotnet.com/quickstart/howto/doc/watcher.aspx
检测到新文件之后,,将他们改写一下吧
[解决办法]
学习中....
[解决办法]
你牛,,,host了系统消息
[解决办法]
移动或者粘贴命令应该是有WINDOWS消息的把,能不能截取到消息,
做个程序实时监听WINDOWS消息,遇到移动或者粘贴命令修改剪贴板内容.
我不懂,不知可不可以,不对大家别笑我.
[解决办法]
MARK
[解决办法]
同是星星,只能帮你up了。
[解决办法]
必须hook系统MSG,然后判断路径是否是你要监听的路径,再去处理
[解决办法]
FileSystemWatcher
如果你要更高级的功能
写驱动过滤Filter
------解决方案--------------------
驱动过滤Filter
试试
[解决办法]
监控文件夹 改变FileSystemWatcher 可以做到
不过 中途修改 内容 可能需要获取 剪切板里的内容吧
取到里面的文件源 然后你去读取文件源 修改后再写入进去.
[解决办法]
用VS2005,.Net里面有个FileSystemWatcher控件,它会通知文件创建,修改,删除的消息
监视指定目录有api函数FindFirstChangeNotification,FindCloseChangeNotification,FindNextChangeNotification.具体内容见:http://vip.6to23.com/NowCan1/tech/dirwatch.htm
监视注册表有api函数.http://www.sysinternals.com/ntw2k/source/regmon.shtml 这里有regmon及其全部代码...
[C#]
public class Watcher
{
public static void Main()
{
string[] args = System.Environment.GetCommandLineArgs();
// If a directory is not specified, exit program.
if(args.Length != 2)
{
// Display the proper way to call the program.
Console.WriteLine( "Usage: Watcher.exe (directory) ");
return;
}
// Create a new FileSystemWatcher and set its properties.
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = args[1];
/* Watch for changes in LastAccess and LastWrite times, and
the renaming of files or directories. */
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
// Only watch text files.
watcher.Filter = "*.txt ";
// Add event handlers.
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);
// Begin watching.
watcher.EnableRaisingEvents = true;
// Wait for the user to quit the program.
Console.WriteLine( "Press \ 'q\ ' to quit the sample. ");
while(Console.Read()!= 'q ');
}
// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e)
{
// Specify what is done when a file is changed, created, or deleted.
Console.WriteLine( "File: " + e.FullPath + " " + e.ChangeType);
}
private static void OnRenamed(object source, RenamedEventArgs e)
{
// Specify what is done when a file is renamed.
Console.WriteLine( "File: {0} renamed to {1} ", e.OldFullPath, e.FullPath);
}
}