亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

監視資源管理器的文件變化

2019-11-18 17:57:01
字體:
來源:轉載
供稿:網友

我的主頁: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;

function shnotify_register(hwnd: integer): bool;
var
ps: pidlstruct;
begin
  {$R-}
  result := false;
  if m_hshnotify = 0 then begin
    //獲取桌面文件夾的pidl
    if shgetspecialfolderlocation(0, CSIDL_DESKTOP, m_pidldesktop) <> noerror then
    form1.close;
    if boolean(m_pidldesktop) then begin
      new(ps);
      try
        ps.bwatchsubfolders := 1;
        ps.pidl := m_pidldesktop;
        
        // 利用shchangenotifyregister函數注冊系統消息處理
        m_hshnotify := shchangenotifyregister(hwnd, (shcnf_type or shcnf_idlist),
        (shcne_allevents or shcne_interrupt),
        wm_shnotify, 1, ps);
        result := boolean(m_hshnotify);
        finally
          FreeMem(ps);
        end;
      end
      else
      // 如果出現錯誤就使用 cotaskmemfree函數來釋放句柄
      cotaskmemfree(m_pidldesktop);
    end;
    {$R+}
  end;
  
  function shnotify_unregister: bool;
  begin
    result := false;
    if boolean(m_hshnotify) then
    //取消系統消息監視,同時釋放桌面的pidl
    if boolean(shchangenotifyderegister(m_hshnotify)) then begin
      {$R-}
      m_hshnotify := 0;
      cotaskmemfree(m_pidldesktop);
      result := true;
      {$R-}
    end;
  end;
  
  procedure tform1.wmshellreg(var message: tmessage); //系統消息處理函數
var
  strpath1, strpath2: string;
  charpath: array[0..259] of char;
  pidlitem: pshnotifystruct;
  vPath,vFile:string;
  begin
    pidlitem := pshnotifystruct(message.wparam);
    //  獲得系統消息相關得路徑
  shgetpathfromidlist(pidlitem.dwitem1, charpath);
    strpath1 := charpath;
    shgetpathfromidlist(pidlitem.dwitem2, charpath);
    strpath2 := charpath;
    vPath:=ExtractFilePath(strPath1);
    vFile:=ExtractFileName(strPath1);
    if (message.lparam=shcne_create) and (vPath=(Label1.Caption+'/')) then
    begin
      // memo1.lines.add(sheventname(strpath1, strpath2, message.lparam) + chr(13) + chr(10));
    if not AnsiContainsText(Memo1.Lines.Text,vFile) then
      memo1.lines.add(vFile);
    end;
  end;
  
  
  procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  begin
    //在程序退出的同時刪除監視
  if boolean(m_pidldesktop) then
    shnotify_unregister;
    
  end;
  
  procedure TForm1.Button1Click(Sender: TObject);
  begin
    Memo1.Clear;
    m_hshnotify := 0;
    if shnotify_register(form1.handle) then begin //注冊shell監視
    showmessage('shell監視程序成功注冊');
      button1.enabled := false;
    end
    else
    showmessage('shell監視程序注冊失敗');
    
  end;
  
  procedure TForm1.Button2Click(Sender: TObject);
  var
  i:integer;
  begin
    i:=Memo1.Lines.IndexOf(Memo1.SelText);
    Memo1.Lines.Delete(i);
  end;
  
end.


上一篇:建立自己的csdn知識管理庫(1)

下一篇:實現在virtualStringtree中編輯的標準步驟

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲缚视频在线观看| 国产精品自产拍高潮在线观看| 欧美日韩中文字幕日韩欧美| 亚洲一区国产精品| 美女撒尿一区二区三区| 欧美极品欧美精品欧美视频| 久久久久久亚洲精品中文字幕| 欧美在线一级va免费观看| 日韩欧美在线一区| 成人动漫网站在线观看| 亚洲欧美激情四射在线日| 色婷婷综合久久久久| 国产拍精品一二三| 日本在线观看天堂男亚洲| 一区二区三区视频免费在线观看| 亚洲日本中文字幕免费在线不卡| 精品国产一区二区三区久久久狼| 中文字幕精品影院| 黑人巨大精品欧美一区二区一视频| 日韩精品极品毛片系列视频| 日韩电影免费在线观看中文字幕| 国产精品毛片a∨一区二区三区|国| 91亚洲va在线va天堂va国| 91精品视频播放| 日韩av不卡电影| 欧美午夜精品在线| 欧美日韩亚洲91| 亚洲人成免费电影| 国产拍精品一二三| 国产精品自产拍高潮在线观看| 麻豆乱码国产一区二区三区| 黑人巨大精品欧美一区二区三区| 日韩在线视频线视频免费网站| 欧美床上激情在线观看| 亚洲国产成人爱av在线播放| 亚洲色图色老头| 性色av一区二区三区在线观看| 91精品国产综合久久香蕉| 色婷婷av一区二区三区在线观看| 国产精品自拍小视频| 国语对白做受69| 91免费视频国产| 奇米一区二区三区四区久久| 欧美最顶级的aⅴ艳星| 亚洲一区二区免费| 久久人人97超碰精品888| 欧美高清视频在线观看| 亚洲男人天堂古典| 日韩欧美在线视频观看| 91日本在线视频| 另类色图亚洲色图| 中文亚洲视频在线| 亚洲精品视频免费在线观看| 欧美在线免费看| 久久影院模特热| 91国产中文字幕| 久久久久久久香蕉网| 日韩美女视频中文字幕| www欧美日韩| 国产69精品久久久| 国产网站欧美日韩免费精品在线观看| 91久久嫩草影院一区二区| 日韩免费在线视频| 不卡av电影院| 69视频在线播放| 日韩大片在线观看视频| 成人午夜黄色影院| 啪一啪鲁一鲁2019在线视频| 亚洲自拍偷拍在线| 欧美激情亚洲一区| 亚洲精品国产综合久久| 日韩黄色在线免费观看| 国产精品爽黄69天堂a| 成人黄色av网| 最新国产精品亚洲| 日韩av最新在线| 97久久超碰福利国产精品…| 国产精品美女www| 欧美精品一区三区| 久久精品成人动漫| 日韩在线视频免费观看高清中文| 久久天天躁狠狠躁夜夜躁| 97视频在线观看免费| 国产91久久婷婷一区二区| 久久精品国产亚洲| 午夜精品一区二区三区在线| 国产精品美女在线观看| 精品精品国产国产自在线| 国产精品久久久久久久久久久不卡| 91免费精品国偷自产在线| 狠狠久久五月精品中文字幕| 最新日韩中文字幕| 欧美日韩精品在线观看| 欧美性xxxxhd| 欧美激情在线视频二区| 日韩电影在线观看中文字幕| 亚洲图片在线综合| 久久国产一区二区三区| 欧美在线日韩在线| 欧美精品久久久久a| 日韩精品中文字幕在线观看| 97精品国产aⅴ7777| 欧美性生交xxxxxdddd| 国产精品久久久久久久久久久不卡| 668精品在线视频| 91精品国产高清久久久久久91| 亚洲精品福利资源站| 一区国产精品视频| 久久精品影视伊人网| 亚洲精品久久视频| 日韩精品在线视频观看| 欧美激情视频在线| 国产一区二区三区网站| 国产欧美在线观看| 国产欧美一区二区三区久久| 92版电视剧仙鹤神针在线观看| 久久久精品久久| 亚洲乱码国产乱码精品精天堂| 久久久久久久爱| 欧美在线视频导航| 午夜精品久久久久久99热| 中日韩美女免费视频网站在线观看| 高清欧美性猛交xxxx黑人猛交| 亚洲图片在线综合| 久久久成人精品| 久久久久久久999精品视频| 欧美大尺度在线观看| 国产精品久久久精品| 欧美成人国产va精品日本一级| 久国内精品在线| 国产精品国产三级国产专播精品人| 青草成人免费视频| 午夜精品一区二区三区在线视| 欧美激情喷水视频| 国产在线精品成人一区二区三区| 成人观看高清在线观看免费| 亚洲视频专区在线| 少妇激情综合网| 国产欧美日韩专区发布| 中文字幕日韩综合av| 少妇高潮 亚洲精品| 久久亚洲国产精品| 亚洲最大成人免费视频| 综合欧美国产视频二区| 欧美色另类天堂2015| 色综合老司机第九色激情| 日韩中文理论片| 欧美电影《睫毛膏》| 国产自产女人91一区在线观看| 北条麻妃久久精品| 亚洲精品白浆高清久久久久久| 疯狂蹂躏欧美一区二区精品| 国产精品久久久久久久久久ktv| 亚洲在线视频观看| 色婷婷综合久久久久中文字幕1| 狠狠久久亚洲欧美专区| 久久精品久久久久久国产 免费| 国产一区二区精品丝袜| 精品国内产的精品视频在线观看| 精品国产一区二区三区久久狼5月| 2023亚洲男人天堂| 久久99精品久久久久久噜噜| 欧美性xxxx极品hd欧美风情| 91在线视频免费|