捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:TFileSystemWatcher 文件监视组件
xmcore 604224 2021/2/14 18:01:10
先通过FileSystemWatcher.pas安装TFileSystemWatcher控件,我选择FileSystemWatcher.pas,安装组件,DELPHI XE7 编译在这一行时提示错误,GetQueuedCompletionStatus(TempCompletionPort, numBytes, CompletionKey, PFOverlapped, INFINITE); 有谁知道是什么原因呢,谢谢!
skywings 37178 2009/4/11 16:56:41

 封装的还不错,顶一下。不过,我在使用中发现不能满足需要,如果能对具体的文件监

视,那就更好了。比如:文件的大小,最后更新日期发生了变化,则发出通知。

在torry Delphi网站有个同样封装api的类似组件则可以实现上述功能。

分享一下。
http://www.torry.net/vcl/filedrv/notification/ATFileNotification.zip
aa5058362 35083 2008/7/25 9:42:19
说两句
86652764 34862 2008/7/4 13:43:33
zhuixin 31398  2007-10-11 1:36:40 
怎么缺少组件啊?怎么回事? 
要自己新建一件dpk
再把FileSystemWatcher.pas添加一下.
new --->package
solokey 31621 2007/11/1 0:59:46
修正一个BUG...看了MSDN才知道...是byte...
procedure TShellChangeThread.DoIOCompletionEvent;
var
  TempBuffer: TNotificationBuffer;
  FileOpNotification: PFileNotifyInformation;
  Offset: Longint;
  FileName1, FileName2: string;
  FileOperation: TFileOperation;
  procedure DoDirChangeEvent;
  begin
    if Assigned(ChangeEvent) and FActived then
      ChangeEvent(FileOperation, FileName1, FileName2);
  end;
  function  CompleteFileName(const FileName:string):string;
  begin
    Result := '';
    if Trim(FileName) <> '' then
      Result := FDirectory + FileName;
  end;
begin
  Lock;
  TempBuffer := FNotificationBuffer;
  FillChar(FNotificationBuffer, SizeOf(FNotificationBuffer), 0);
  Unlock;
  Pointer(FileOpNotification) := @TempBuffer[0];
  repeat
    with FileOpNotification^ do begin
      Offset := NextEntryOffset;
      FileName2 := '';
      case Action of
        FILE_ACTION_ADDED..FILE_ACTION_MODIFIED: begin
          FileName1 := CompleteFileName(WideCharLenToString(@FileName, FileNameLength div SizeOf(WideChar)));
          FileOperation := TFileOperation(Action - 1);
          DoDirChangeEvent;
        end;
        FILE_ACTION_RENAMED_OLD_NAME: begin
          FileName1 := CompleteFileName(WideCharLenToString(@FileName, FileNameLength div SizeOf(WideChar)));
          FileOperation := TFileOperation(Action - 1);
        end;
        FILE_ACTION_RENAMED_NEW_NAME: begin
          if FileOperation = foRenamed then begin
          FileName2 := CompleteFileName(WideCharLenToString(@FileName, FileNameLength div SizeOf(WideChar)));
          DoDirChangeEvent;
          end;
        end;
      end;
    end;
  Pointer(FileOpNotification) := Pointer(PChar(FileOpNotification) + OffSet);
  until Offset=0;
end;
zhuixin 31398 2007/10/11 1:36:40
怎么缺少组件啊?怎么回事?
solokey 31282 2007/9/26 21:41:24
你写个不差劲的让我学习学习咯.
tzengwei 31243 2007/9/23 20:58:53
差劲!!!
TFileSystemWatcher这个类,你发出来干吗!
dw_cd 30603 2007/8/2 15:45:09
呵呵,好东西。比使用API好用!
顶一下
solokey 30590 2007/8/1 17:50:40
demo只开了2个监视,只监视了文件和文件夹名称修改......功能不会在这里差的....
st52 30582 2007/8/1 10:42:59
没看过代码```刚刚试了一下功能```差一点点功能```
    就是文件内容改变没有通知``
        有时间我一定看看代码````
jjxboy 30569 2007/7/31 7:37:47
不错,谢谢
第一页 上一页 下一页 最后页 有 12 条纪录 共1页 1 - 12
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表