文件监视(50分)

  • 主题发起人 主题发起人 actionteam
  • 开始时间 开始时间
A

actionteam

Unregistered / Unconfirmed
GUEST, unregistred user!
请问,如何实现监视选定目录下的文件,当选定目录下有文件或目录更改,添加操作时,把更改或添加的文件名称显示于listview,然后可以在listview中双击选中,在memo中打开文件。
 
为何无人答呢,给点提示也好啊。。
 
都去吃饭了吗?等着呢
 
呵呵!
用Delphi实现几句代码写不完哟~!
 
那实现的方法呢。
 
有点复杂,要用好几个函数
 
用Shell Hook可以实现!
 
留下邮箱地址,我给你一份代码,不过“在listview中双击选中,在memo中打开文件”这个功能没有,你可以自己加,对于监视的功能我做好了
 
谢谢楼上的。。。。
actionteam@163.com
 
zbb011
我也要一份。ddmlove@126.com 谢谢
 
楼上,你也在搞?你会用TShellChangeNotifier吗?可否跟我说下,譬如举个例子。。
 
http://delphi.about.com/od/kbwinshell/l/aa030403a.htm,这个地方去看,有功能更强大的,而且开放源码,有例子的,delphi带的tshellchangenotifier需要配合其他控件使用,不能单独使用的!
 
我刚刚用了下,是可行。不过,不是用ShellChangeNotifier写的。是用API写成控件了再用的。太深奥了,我都看不明白他控件怎么写的,我现在只想用自带的ShellChangeNotifier控件自己写,我是新手,学点东西。谢谢上面那位高手。有谁会用那控件的啊。
 
也给我发份 kspaul@163.com
 
Use TShellChangeNotifier with a TDirectoryListBox or select a path which should be watched by this component. If the user made changes on selected path you become notified by the OnChangeEvent. If you use the TDirectoryListBox and connect a TFileListBox this component keeps both components refreshed on changes were made on the viewed directory. You can't use it with D6 because there is always a TShellChangeNotifier component registered so if you want to use it with D6 you must first rename the component e.g. to TXShellChangeNotifier befor you can install it to the VCL.
这个是我从网上搜索到的帮助信息,但是如果你要直接使用delphi自带的话,那么有一个问题就是这个控件只提供了一个事件onchange,你需要写的监视代码就在这个事件里面,而且这个事件没有参数,很变态,至于被监视的对象发生的是什么事件,无从判断。当你监视的文件夹有变化的时候,你在onchange事件里面写showmessage('changge!')看看,在有的操作系统里面可能不管用。
 
在onchange里调用过程,我想过,不过我不会做啊,我师傅提示了下我
用shell和hook可以实现。两个我都是刚刚接触的。请指教。我写的一个用API实现的。可以监视到主目录的变化,但子目录无法实现,请问如何用ShellChangeNotifier控件写呢。 急啊
procedure Twatch.callback(hd:THANDLE);
begin
Form1.change(Form1.ComboBox1.ItemIndex);
hd:=FindFirstChangeNotification(Pchar(Dir),false,FILE_NOTIFY_CHANGE_FILE_NAME);
if hd=INVALID_HANDLE_VALUE then
begin
ShowMessage(Syserrormessage(getlasterror()));
Exit;
end;
stat:=WaitForSingleObject(hd,$ffffffff);
while stat=0 do
begin
ShowMessage('有文件改变');
FindNextChangeNotification(hd);
stat:=WaitForSingleObject(hd,$ffffffff);
end;
 
也给我一份
linqs@china1168.com
 
哪有那么麻烦,D7有现成的控件,Simple面板,ShellChangeNotifier控件
 
请问ShellChangeNotifier的用法。如何实现我要实现的功能。也就是说,获得操作文件的路径。。。
感谢,我发了两个帖了。
 
to actionteam, DingP, kspaul,linqunshan:
各位不好意思,这两天在外面学习没有及时把代码发过去,现在补发给各位了,里面还有一些相关的资料,希望对你们有用,如果觉得可以不妨给我点分吧,谢谢了!
 
后退
顶部