Последние записи
- DSPack и плата видеозахвата. Программа.
- Рассылка. Выпуск 69.
- Как сделать экспорт ветки реестра?
- Как сделать общий доступ к папке в сети по паролю?
- Зачем мир гонится за терабайтами?
- Как программно задать файлу атрибут?
- Как сделать слежение за буфером обмена в Delphi?
- Получить путь к исполняемому файлу включая имя исполняемого файла. [WPF]
- Обсуждаем оболочки С/С++
- Как обработать данные с форм в php?
10th
FEB
Мониторинг файлов в папке. слежение за файлом
Posted by Alar under Win Api, Исходники, Пост-обзор, Топик-обзор
Отслеживает появление в папке файлов. слежение за определенным файлом в определенной папке.
type
PFileNotifyInformation = ^TFileNotifyInformation;
TFileNotifyInformation = record
NextEntryOffset: DWORD;
Action: DWORD;
FileNameLength: DWORD;
FileName: array [0..MAX_PATH - 1] of WideChar;
end;
....
//programmersforum.ru
....
procedure TForm1.Test;
const
Filter =
FILE_NOTIFY_CHANGE_FILE_NAME or
FILE_NOTIFY_CHANGE_DIR_NAME or
FILE_NOTIFY_CHANGE_ATTRIBUTES or
FILE_NOTIFY_CHANGE_SIZE or
FILE_NOTIFY_CHANGE_LAST_WRITE or
FILE_NOTIFY_CHANGE_LAST_ACCESS or
FILE_NOTIFY_CHANGE_CREATION or
FILE_NOTIFY_CHANGE_SECURITY;
var
Dir: THandle;
Notify: TFileNotifyInformation;
BytesReturned: DWORD;
begin
Dir := CreateFile('d:\', GENERIC_READ,
FILE_SHARE_READ or FILE_SHARE_WRITE or FILE_SHARE_DELETE,
nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
if Dir <> INVALID_HANDLE_VALUE then
try
if not ReadDirectoryChangesW(Dir, @Notify, SizeOf(TFileNotifyInformation),
False, Filter, @BytesReturned, nil, nil) then
raise Exception.Create(SysErrorMessage(GetLastError))
else
case Notify.Action of
FILE_ACTION_ADDED: Memo1.Lines.Add('New file' + Notify.FileName);
FILE_ACTION_REMOVED: Memo1.Lines.Add('Delete file' + Notify.FileName);
FILE_ACTION_MODIFIED: Memo1.Lines.Add('Modify file' + Notify.FileName);
FILE_ACTION_RENAMED_OLD_NAME: Memo1.Lines.Add('Old Name file' + Notify.FileName);
FILE_ACTION_RENAMED_NEW_NAME: Memo1.Lines.Add('New Name file' + Notify.FileName);
end;
finally
CloseHandle(Dir);
end;
end;


