欢迎来到天天文库
浏览记录
ID:30767317
大小:87.05 KB
页数:9页
时间:2019-01-03
《delphi监控文件系统》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、你是否想为你的Windows加上一双眼睛,察看使用者在机器上所做的各种操作(例如建立、删除文件;改变文件或口录名字)呢?这里介绍一种利用Windows未公开函数实现这个功能的方法。在Windows卜'有一个未公开函数SHChangeNotifyRegistcr可以把你的窗口添加到系统的系统消息监视链中,该函数在Delphi中的定义如2FunctionSHChangcNotifyRcgistcr(hWnd,uFlags,dwEvcntID,uMSG,cltcms:LongWord;lpps:PIDLSTRUC
2、T):integer;stdcal1;external'Shcll32.dll'index2;其中参数hWnd定义了监视系统操作的窗II得句柄,参数uFlagsdwEvcntID定义监视操作参数,参数uMsg定义操作消息,参数cltcms定义附加参数,参数lpps指定一个PIDLSTRUCT结构,该结构指定监视的目录。当函数调用成功Z后,函数会返回一个监视操作句柄,同时系统就会将hWnd指定的窗口加入到操作监视链屮,当有文件操作发生时,系统会向hWnd发送uMsg指定的消息,我们只耍在程序中加入该消息的处理
3、函数就可以实现对系统操作的监视了。如果要退出程序监视,就要调用另外一个未公开得函数SIlChangcNotifyDcrcgister來取消程序监视。卜•面是使用Delphi编写的具体程序实现范例,首先建立一个新的工程文件,然后在FormlH1加入一个Button控件和一个Memo控件,程序的代码如下:unitUnitl;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,shlobj,
4、Activex,StdCtrls;constSIICNE_RENAMEITEM=$1;SHCNECREATE=$2;SI1CNE_DELETE=$4;SHCNEMKDIR=$8;SI1CNE_RMDIR=$10;SHCNEMEDIAINSERTED=$20;SIICNEJ1EDIAREM0VED=$40;SHCNEDRIVEREMOVED=$80;SI1CNE_DRIVEADD=$100;SHCNENETSHARE=$200;SIICNE_NETUNSHARE=$400;SHCNEATTRIBUTES=$8
5、00;SI1CNE_UPDATEDIR=$1000;SHCNEUPDATEITEM=$2000;SIICNE^SERVERDISCONNECT=$4000;SHCNEUPDATEIMAGE=$8000;SIICNE_DRIVEADDGUI=$10000;SHCNERENAMEFOLDER二$20000;SIICNE—FREESPACE=$40000;SHCNEASSOCCHANGED=$8000000;SI1CNE_DISKEVENTS=$2381F;SHCNEGLOBALEVENTS=$C0581E0;S
6、I1CNE_ALLEVENTS=$7FFFFFFF;SHCNEINTERRUPT=$80000000;SI1CNF_IDLIST=0;//LPITEMIDLISTSI1CNF_PATI1A=$1;//pathnameSI1CNF_PRINTERA=$2;//printerfriendlynameSI1CNFDWORD=$3;//DWORDSHCNFPATHW=$5;//pathnamcSHCNFPRINTERW=$6;//printerfricndlynamcSHCNFTYPE=$FF;SIICNF_FLU
7、SI1=$1000;SHCNFFLUSHNOWAIT=$2000;SIICNF_PATII=SI1CNF_PATIIW;SHCNFPRINTER=SHCNFPRINTERW;™_SI(NOTIFY=$401;NOERROR=0;typeTForml=class(TForm)Buttonl:TButton;Mcmol:TMcmo;procedureFormClose(Sender:TObject;vatAction:TCloseAction);procedureButtonlClick(Scndcr:TObj
8、cct);private{Privatedeclarations}publicprocedureWMShcllRcg(varMessage:TMcssagc);messageWM_SIINOTIFY;{Publicdeclarations}end;typcPSIINOTIFYSTRUCT二八SIINOTIFYSTRUCT;SHNOTIFYSTRUCT=recorddwltcml:PItemIDList;dwltc
此文档下载收益归作者所有