| 
| 
 | Вопрос # 1 370/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Подскажите,пожалуйста, как отловить открытие папки и/или файла в Windows? Лучше с примером. Заранее спасибо.
 
|  |   Вопрос задал: Иванов (статус: Посетитель)Вопрос отправлен: 24 февраля 2008, 08:48
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Drozdov D.V. Здравствуйте, Иванов!Вот вам примерчик по отслеживанию изменения файлов.
 в едите задаёте путь и смотрети о всех изменениях.
 Пример это ест в Delphi 8 net.
 Удачи!
 Приложение:Переключить в обычный режим unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs,wfsU, StdCtrls, CheckLst, ExtCtrls, Buttons; type  TForm1 = class(TForm)    Memo1: TMemo;    Button1: TButton;    Button2: TButton;    Edit1: TEdit;    Label1: TLabel;    CheckBox1: TCheckBox;    CheckBox2: TCheckBox;    CheckBox3: TCheckBox;    CheckBox4: TCheckBox;    CheckBox5: TCheckBox;    CheckBox6: TCheckBox;    CheckBox7: TCheckBox;    CheckBox8: TCheckBox;    CheckBox9: TCheckBox;    BitBtn1: TBitBtn;    CheckBox10: TCheckBox;    Button3: TButton;    Panel1: TPanel;    ListBox1: TListBox;    procedure Button1Click(Sender: TObject);    procedure Button2Click(Sender: TObject);   private    { Private declarations }  public    { Public declarations }  end; var  Form1: TForm1;  LI:integer;  Drive:char;  DT:Cardinal;implementation {$R *.dfm} procedure MyInfoCallBack(pInfo: TInfoCallBack);  const    Action: array[1..3] of String =
('Ñîçäàíèå: %s',
'Óäàëåíèå: %s',
'Èçìåíåíèå: %s');  begin     case pInfo.FAction of      FILE_ACTION_RENAMED_NEW_NAME:
Form1.Memo1.Lines.Add(Format('Ïåðåèìåíîâàíèå:
%s â %s',          [pInfo.FDrive+pInfo.FOldFileName,pInfo.FDrive+pInfo.FNewFileName]));    else      if pInfo.FAction<FILE_ACTION_RENAMED_OLD_NAME then        Form1.Memo1.Lines.Add(Format(Action[pInfo.Faction], [pInfo.FDrive+pInfo.FNewFileName]));    end;{   case pInfo.FAction ofFILE_NOTIFY_CHANGE_FILE_NAME:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_FILE_NAME');FILE_NOTIFY_CHANGE_DIR_NAME:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_DIR_NAME');FILE_NOTIFY_CHANGE_ATTRIBUTES:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_ATTRIBUTES');FILE_NOTIFY_CHANGE_SIZE:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_SIZE');FILE_NOTIFY_CHANGE_LAST_WRITE:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_LAST_WRITE');FILE_NOTIFY_CHANGE_LAST_ACCESS:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_LAST_ACCESS');FILE_NOTIFY_CHANGE_CREATION:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_CREATION');FILE_NOTIFY_CHANGE_SECURITY:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_SECURITY');   end;}  end; procedure TForm1.Button1Click(Sender: TObject);var  Flags:Cardinal;begin{FILE_NOTIFY_CHANGE_FILE_NAME        =
$00000001;//èçìåíåíèå
èìåíè
ôàéëàFILE_NOTIFY_CHANGE_DIR_NAME         = $00000002;//èçì.
èìåíè
ïàïêèFILE_NOTIFY_CHANGE_ATTRIBUTES       =
$00000004;//àòðèáóòîâ
ôàéëàFILE_NOTIFY_CHANGE_SIZE             =
$00000008;//ðàçìåðàFILE_NOTIFY_CHANGE_LAST_WRITE       =
$00000010;//ïîñëåäíåé
çàïèñèFILE_NOTIFY_CHANGE_LAST_ACCESS      =
$00000020;//ïîñëåäíåãî
äîñòóïàFILE_NOTIFY_CHANGE_CREATION         =
$00000040;//ñîçäàíèÿFILE_NOTIFY_CHANGE_SECURITY         = $00000100;//ïðàâ
äîñòóïà}Flags:=0;if CheckBox2.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_FILE_NAME;if CheckBox3.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_DIR_NAME;if CheckBox4.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_ATTRIBUTES;if CheckBox5.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_SIZE;if CheckBox6.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_LAST_WRITE;if CheckBox7.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_LAST_ACCESS;if CheckBox8.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_CREATION;if CheckBox9.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_SECURITY;                                                                                                    
                                                                                                    
                                                                 
//âêëþ÷àÿ
ïîäêàòàëîãèStartWatch(Edit1.Text, Flags, CheckBox1.Checked, @MyInfoCallBack);end; procedure TForm1.Button2Click(Sender: TObject);beginStopWatch;end; end.
|  | Ответ отправил: Drozdov D.V. (статус: 4-ый класс)Время отправки: 24 февраля 2008, 20:07
 
 |  
 Мини-форум вопросаВсего сообщений: 3; последнее сообщение — 7 ноября 2011, 12:02; участников в обсуждении: 2. 
|   | SideWalkeR (статус: Посетитель), 7 ноября 2011, 05:16 [#1]:А какая часть кода отвечает именно за отлов открытия папки? |  
|   | Drozdov D.V. (статус: 4-ый класс), 7 ноября 2011, 09:41 [#2]:MyInfoCallBack |  
|   | SideWalkeR (статус: Посетитель), 7 ноября 2011, 12:02 [#3]:Action: array[1..3] of String = ('Ñîçäàíèå: %s', 'Óäàëåíèå: %s', 'Èçìåíåíèå: %s'); 
 Что значат последние 3 строки?
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |