| Автор
| Сообщение |
|
|
|
Цитата |
|
Нужно отследить попытку удалить файл.
Для папок есть ICopyHook::CopyCallback, а что нибудь для файлов есть? |
|
| В начало |
|
 |
|
|
 |
|
|
|
Цитата |
|
| У меня есть книга в каторой про это расказоваетца но у меня чёто неполучяеца оставь емайл пошлю может у тебя получеца |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Книга в электронном ввиде или в бумажном? Если в электронном, то выложи куда нибудь для выкачки. Если в бумажном лучше всего отскани и перегони в текст этот кусок. Либо хотя бы пример скинь на goshavt(собака)mail.ru. |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Цитата: |
зарание извеняюсь за неграмотность
|
Вот короче код разберёшся напеши чё нетак (а мыло твоё goshavt@mail.ru. непашет)
| Код: |
var DirName : string;
procedure TSimpleThread.Execute;
var r: Cardinal;
fn : THandle;
begin
fn := FindFirstChangeNotificationtpChar(DirName),True,
FILE_NOTIFY_CHANGE_FILE_NAME);
repeat
r := WaitForSingleObject(fn,2000);
if r = WAIT_OBJECT_0 then
Forml.UpdateList;
if not FindNextChangeNotification(fn) then break;
until Terminated;
FindcioseChangeNotification(fn);
end;
На главной форме должны находиться компоненты, нужные для выбора
обследуемой папки, а также компонент TListBox, в который будут записы-
ваться имена файлов:
procedure TForml.ButtonlClick(Sender: TObject);
var dir : string;
begin
if SelectDirectory(dir,[],0) then
begin
Edit1.Text := dir;
DirName := dir;
end;
end;
procedure TForml.UpdateList;
var SearchRec: TSearchRec;
220 Часть II. Интерфейс и логика приложения
begin
ListBoxl.Clear;
FindFirst(Editl.Text+'\*.*', faAnyFile, SearchRec);
repeat
ListBoxl.Items.Add(SearchRec.Name);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
|
кароче я есчё знаю что надо сначяло оповестить венду о том что хочеш получять
сообщения это делоетца функцией findfirstchangenotification у неё 3 порамитра пер-
вый путь к папке за файлами которой ты хочеш следить второй true если ты хочеш
следить и за подпапками третий параметр флаг
file_notify_change_file_name будет сообщять о любых изменениях (перименование
создание удоление) файлов
file_notify_change_dir_name кароче тоже самое только с папками
file_notify_change_attributes изменение отребутов
file_notify_change_file_size изменение размера
file_notify_change_file_last_write изменение времени последней записи в файл
file_notify_change_security изменение дескриптов защиты
функция возрощяет хендел есле он равен invalid_handle_value значет ты гдето
наебался
примерно так
| Код: |
procedure TForm1.Button1Click(Sender: TObject);
var
File : THandle;
begin
File:=findfirstchangenotification('c:\q',false,file_notify_change_file_name);
File=invalid_handle_value then
begin
showmessage('ошипка');
exit;
end;
|
хендел будет меняца при каждом изменение в файловой сестеме и после
каждова сообщения нужно говарить венде о том что ты желаеш дальше
следить это делоеца функцией findnextchangenotification у неё один пора-
метр это хендел вызывать её вроде как надо после оброботке сообщения
есле больше нехочеш следить за файломи то вызываеш
findclosechangenotification у неё тоже один параметр хендел
есчё короче waitforsingleobject и waitformultipleobject они вроде как для
оброботке событий в разделе книги из которой я эту информацию выудил
обеснили что эти функции толе уже были описоны толи будут я поищю
разберёшся раньше напеши а во второй книги нашол тот моразмный код
что опесал выши вобще без обеснений |
|
| В начало |
|
 |
 Ktf
Администратор

Возраст: 32
Знак зодиака: 
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
|
|
|
Цитата |
|
в дополнение к вышесказанному:
приведенный код позволяет установить аудит файла/каталога, но, к сожалению, не предоставляет возможности повлиять на результат выполнения операции.
зы: ДОБ, я тебя умоляю, перестань коверкать русский язык! |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Извини, не воспринимай как замечание, но:
Код вполне работоспособный и правильный по логике, а вот по синтаксису он даже компилиться не будет.
| Цитата: | | приведенный код позволяет установить аудит файла/каталога, но, к сожалению, не предоставляет возможности повлиять на результат выполнения операции. |
Совершенно согласен, а требуется как раз при надобности запретить это сделать. А это похоже можна сделать только на уровне драйверов...
PS. Мыло работает, я только что проверял. Может опять ошибся . |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Цитата: |
Код вполне работоспособный и правильный по логике, а вот по синтаксису он даже компилиться не будет.
|
goshavt может подрехтуеш ево и кинеш сюда а то у меня неполучяетца |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Код: |
procedure TForm1.Button1Click(Sender: TObject);
var
File1 : THandle;
r: Cardinal;
SearchRec: TSearchRec;
begin
File1:=findfirstchangenotification('c:\q',false,file_notify_change_file_name);
if File1=invalid_handle_value then
begin
showmessage('ошипка');
exit;
end;
r:=waitforsingleobject(File1,50000);
if r = WAIT_OBJECT_0 then
begin
FindFirst('c:\q\*.*', faAnyFile, SearchRec);
repeat
ListBox1.Items.Add(SearchRec.Name);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
|
|
|
| В начало |
|
 |
|
|
| В начало |
|
 |
|
|
 |
|
|
|
Цитата |
|
Напишите пожалуста пример как...
кпримеру если пользователь удаляет ярлык значит происходит какое то событие и если он его удалил программа производит какие либо действия. |
|
| В начало |
|
 |
|
|
|
Цитата |
|
to Weiss
Как правило вся эта кухня нужна для обновления списка файлов и папок. То есть после получения события, которое вы ожидаете, просто обновляете содержимое списка. Ну а придумать другое применение тоже можно, все зависит от фантазии и надобности.
Но чего сделать нельзя так это запретить чего-то, посколько вы получаете уведомление о уже призошедшем событии. |
|
| В начало |
|
 |
 NikotiN
Розовый мамонт

Возраст: 26
Знак зодиака: 
Зарегистрирован: 18.03.2005
Сообщения: 2137
|
|
|
Цитата |
|
можно виндовскую функцию удаления перекрыть своей ))
некрасиво конечно, но безотказно...если знать что перекрыть |
|
| В начало |
|
 |
|
|
| В начало |
|
 |
 NikotiN
Розовый мамонт

Возраст: 26
Знак зодиака: 
Зарегистрирован: 18.03.2005
Сообщения: 2137
|
|
|
Цитата |
|
в коде никак.
ищешь в памяти функцию, затираешь её своей. всё. |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Интересная тема
Хотелось бы все таки знать, как можно проследить чтобы файл (определенный) нельзя было скопировать/переместить?  |
|
| В начало |
|
 |
|