注册 | 登录
收藏 | 帮助
热门文章
编辑推荐
相关文章  
查杀耗CPU资源的Explored病毒
IMail操作指南(18)-监视服务器
MDaemon规则来监视或备份用户邮件
sybase 性能诊断sp_sysmon监视SQ
减少Win XP占用系统资源的八大技
XP技巧连载之资源管理器秘技放送
解决Windows系统资源严重不足的最
系统资源不足怎么办?多种方案任
系统资源不足怎么办?多种方案任
系统初体验 Vista的资源管理器
您现在的位置: 顶尖设计 >> IT学院 >> 编程开发 >> Delphi >> 文章正文
监视资源管理器的文件变化
作者:srw  来源:srw 的 Blog  点击:  更新:2006-12-19
简介:

我的主页:http://www.tommstudio.com/



unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, shlobj, activex, StdCtrls, FileCtrl,strUtils;

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;
shcne_globalevents = $C0581E0;
shcne_allevents = $7FFFFFFF;
shcne_interrupt = $80000000;

shcnf_idlist = 0; //  lpitemidlist
  shcnf_patha = $1; // path name
  shcnf_printera = $2; // printer friendly name
  shcnf_dword = $3; // dword
  shcnf_pathw = $5; // path name
  shcnf_printerw = $6; // printer friendly name
  shcnf_type = $FF;

shcnf_flush = $1000;

shcnf_flushnowait = $2000;
shcnf_path = shcnf_pathw;
shcnf_printer = shcnf_printerw;

wm_shnotify = $401;
noerror = 0;


type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
DirectoryListBox1: TDirectoryListBox;
DriveComboBox1: TDriveComboBox;
Label1: TLabel;
Button2: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
procedure wmshellreg(var message: tmessage); message wm_shnotify;

public
{ Public declarations }
end;

type pshnotifystruct = ^shnotifystruct;
shnotifystruct = record
dwitem1: pitemidlist;
dwitem2: pitemidlist;
end;

type pshfileinfobyte = ^shfileinfobyte;
_shfileinfobyte = record
hicon: integer;
iicon: integer;
dwattributes: integer;
szdisplayname: array[0..259] of char;
sztypename: array[0..79] of char;
end;
shfileinfobyte = _shfileinfobyte;

type pidlstruct = ^idlstruct;
_idlstruct = record
pidl: pitemidlist;
bwatchsubfolders: integer;
end;
idlstruct = _idlstruct;


function shnotify_register(hwnd: integer): bool;
function shnotify_unregister: bool;
function sheventname(strpath1, strpath2: string; lparam: integer): string;

function shchangenotifyderegister(hnotify: integer): integer; stdcall;
external 'shell32.dll' index 4;
function shchangenotifyregister(hwnd, uflags, dweventid, umsg, citems: longword;
lpps: pidlstruct): integer; stdcall; external 'shell32.dll' index 2;
function shgetfileinfopidl(pidl: pitemidlist;
dwfileattributes: integer;
psfib: pshfileinfobyte;
cbfileinfo: integer;
uflags: integer): integer; stdcall;
external 'shell32.dll' name 'shgetfileinfoa';


var
Form1: TForm1;
m_hshnotify: integer;
m_pidldesktop: pitemidlist;


implementation

{$R *.dfm}

function sheventname(strpath1, strpath2: string; lparam: integer): string;
var
sevent: string;
begin
  case lparam of //根据参数设置提示消息
    shcne_renameitem: sevent := 'rename' + strpath1 + ':' + strpath2;
  shcne_create: sevent := '建立文件 文件名:' + strpath1;
  shcne_delete: sevent := '删除文件 文件名:' + strpath1;
  shcne_mkdir: sevent := '新建目录 目录名:' + strpath1;
  shcne_rmdir: sevent := '删除目录 目录名:' + strpath1;
  shcne_mediainserted: sevent := strpath1 + '中插入可移动存储介质';
  shcne_mediaremoved: sevent := strpath1 + '中移去可移动存储介质' + strpath1 + ' ' + strpath2;
  shcne_driveremoved: sevent := '移去驱动器' + strpath1;
  shcne_driveadd: sevent := '添加驱动器' + strpath1;
  shcne_netshare: sevent := '改变目录' + strpath1 + '的共享属性';
  
  shcne_attributes: sevent := '改变文件目录属性 文件名' + strpath1;
  shcne_updatedir: sevent := '更新目录' + strpath1;
  shcne_updateitem: sevent := '更新文件 文件名:' + strpath1;
  shcne_serverdisconnect: sevent := '断开与服务器的连接' + strpath1 + ' ' + strpath2;
  shcne_updateimage: sevent := 'shcne_updateimage';
  shcne_driveaddgui: sevent := 'shcne_driveaddgui';
  shcne_renamefolder: sevent := '重命名文件夹' + strpath1 + '为' + strpath2;
  shcne_freespace: sevent := '磁盘空间大小改变';
  shcne_assocchanged: sevent := '改变文件关联';
  else
  sevent := '未知操作' + inttostr(lparam);
end;
result := sevent;
end;

[1] [2] 下一页






  • 上一篇文章:
  • 下一篇文章:
  • 分享此文:该页面添加到 Mister Wong 添加到雅虎Yahoo!收藏 Add to:Del.icio.us Post to Furl Digg this 添加到Google书签 reddit spurl blogmarks 365Key 评论  收藏  分享  打印
     我来说两句
    姓名:       验证码:   
    主页: 
    评分: 1分 2分 3分 4分 5分
    本频道近期热评文章:
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备07504942号 
    网络110
    报警服务