|
Вопрос # 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 of
- FILE_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);
- begin
- StopWatch;
- 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 строки?
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|