Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
Есть несколько решений, вот например нарыл на просторах инета:
Код:
type
PFileNotifyInformation = ^TFileNotifyInformation;
TFileNotifyInformation = record
NextEntryOffset: DWORD;
Action: DWORD;
FileNameLength: DWORD;
FileName: array [0..MAX_PATH - 1] of WideChar;
end;
....
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;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.