delphi 监控系统文件操作

    你是否想为你的Windows加上一双眼睛,察看使用者在机器上所做的各种操作(例如建立、删除文件;改变文件或目录名字)呢?

    这里介绍一种利用Windows未公开函数实现这个功能的方法。

    在Windows下有一个未公开函数SHChangeNotifyRegister可以把你的窗口添加到系统的系统消息监视链中,该函数在Delphi中的定义如下:

    Function SHChangeNotifyRegister(hWnd,uFlags,dwEventID,uMSG,cItems:LongWord;
    lpps:PIDLSTRUCT):integer;stdcall;external 'Shell32.dll' index 2;

    其中参数hWnd定义了监视系统操作的窗口得句柄,参数uFlags dwEventID定义监视操作参数,参数uMsg定义操作消息,参数cItems定义附加参数,参数lpps指定一个PIDLSTRUCT结构,该结构指定监视的目录。

    当函数调用成功之后,函数会返回一个监视操作句柄,同时系统就会将hWnd指定的窗口加入到操作监视链中,当有文件操作发生时,系统会向hWnd发送uMsg指定的消息,我们只要在程序中加入该消息的处理函数就可以实现对系统操作的监视了。

    如果要退出程序监视,就要调用另外一个未公开得函数SHChangeNotifyDeregister来取消程序监视。

    下面是使用Delphi编写的具体程序实现范例,首先建立一个新的工程文件,然后在Form1中加入一个Button控件和一个Memo控件,

    程序的代码如下:

unit ufrmMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs ,shlobj, Activex, StdCtrls,
  Menus,
  uTbLogFile;

const  
  SHCNE_RENAMEITEM = $1;
  SHCNE_CREATE = $2;
  SHCNE_DELETE = $4;  
  SHCNE_MKDIR = $8;  
  SHCNE_RMDIR = $10;  
  SHCNE_MEDIAINSERTED = $20;  
  SHCNE_MEDIAREMOVED = $40;  
  SHCNE_DRIVEREMOVED = $80;  
  SHCNE_DRIVEADD = $100;  
  SHCNE_NETSHARE = $200;
  SHCNE_NETUNSHARE = $400;
  SHCNE_ATTRIBUTES = $800;  
  SHCNE_UPDATEDIR = $1000;
  SHCNE_UPDATEITEM = $2000;  
  SHCNE_SERVERDISCONNECT = $4000;
  SHCNE_UPDATEIMAGE = $8000;  
  SHCNE_DRIVEADDGUI = $10000;  
  SHCNE_RENAMEFOLDER = $20000;  
  SHCNE_FREESPACE = $40000;  
  SHCNE_ASSOCCHANGED = $8000000;  
  SHCNE_DISKEVENTS = $2381F;
  SHCN
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值