Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.10.2011, 13:00
Der_G()RuNu(h Der_G()RuNu(h вне форума
Прохожий
 
Регистрация: 23.03.2011
Сообщения: 44
Репутация: -886
По умолчанию Как отследить все недавно открытые документы?

Задался вопросом: как отследить все недавно открытые документы через Delphi?

И даже не знаю, с чего начать... может кто подскажет?
Ответить с цитированием
  #2  
Старый 21.10.2011, 22:31
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Как вариант (имя папки, где недавние документы):
Код:
uses
  ShlObj,
  ...;

function GetSpecialPath(CSIDL: word): string;
var s:  string;
begin
  SetLength(s, MAX_PATH);
  if not SHGetSpecialFolderPath(0, PChar(s), CSIDL, true)
  then s := '';
  result := PChar(s);
end;
Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  ShowMessage(GetSpecialPath(CSIDL_RECENT));
end;

В модуле ShlObj определены соотв. константы.
Ответить с цитированием
  #3  
Старый 21.10.2011, 23:18
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

вообще, большинство файловых систем (NTFS в том числе) сохраняют дату последнего обращения к файлу (даже на чтение). Но тут надо понимать, что придется проверять весь винт и это может быть долго. Еще вариант - хукнуть функции API для доступа к файлам и просто логировать все, что нужно.
Ответить с цитированием
  #4  
Старый 22.10.2011, 09:43
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Цитата:
Сообщение от lmikle
хукнуть функции API для доступа к файлам и просто логировать все, что нужно.
Антивирус рад не будет.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #5  
Старый 22.10.2011, 12:42
Der_G()RuNu(h Der_G()RuNu(h вне форума
Прохожий
 
Регистрация: 23.03.2011
Сообщения: 44
Репутация: -886
По умолчанию

Цитата:
Сообщение от lmikle
Еще вариант - хукнуть функции API для доступа к файлам и просто логировать все, что нужно.
Каспер это не одобрил... :-D
Ответить с цитированием
  #6  
Старый 22.10.2011, 12:44
Der_G()RuNu(h Der_G()RuNu(h вне форума
Прохожий
 
Регистрация: 23.03.2011
Сообщения: 44
Репутация: -886
По умолчанию

Цитата:
Сообщение от roamer
Как вариант (имя папки, где недавние документы):
Код:
uses
  ShlObj,
  ...;

function GetSpecialPath(CSIDL: word): string;
var s:  string;
begin
  SetLength(s, MAX_PATH);
  if not SHGetSpecialFolderPath(0, PChar(s), CSIDL, true)
  then s := '';
  result := PChar(s);
end;
Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  ShowMessage(GetSpecialPath(CSIDL_RECENT));
end;

В модуле ShlObj определены соотв. константы.
об этом я тоже думал...
спасибо конечно...

но это немного не то, потому что мне надо отследить какие процессы запускались, на какие сайты заходили в браузере...
Ответить с цитированием
  #7  
Старый 25.10.2011, 19:27
Lucky192 Lucky192 вне форума
Прохожий
 
Регистрация: 04.10.2011
Сообщения: 28
Репутация: 1351
По умолчанию

Что-то темы у вас какие-то странные... То кнопку в чужом приложении нажать, то системные файлы найти и удалить, теперь вот за действиями пользователя следить... В вирусописатели подались?
Ответить с цитированием
  #8  
Старый 26.10.2011, 12:00
Der_G()RuNu(h Der_G()RuNu(h вне форума
Прохожий
 
Регистрация: 23.03.2011
Сообщения: 44
Репутация: -886
По умолчанию

Цитата:
Сообщение от Lucky192
Что-то темы у вас какие-то странные... То кнопку в чужом приложении нажать, то системные файлы найти и удалить, теперь вот за действиями пользователя следить... В вирусописатели подались?

Боже упаси...
просто интересно все, что необычно и небанально...
Ответить с цитированием
  #9  
Старый 29.10.2011, 13:33
Der_G()RuNu(h Der_G()RuNu(h вне форума
Прохожий
 
Регистрация: 23.03.2011
Сообщения: 44
Репутация: -886
По умолчанию

неужели никто ничего дельного предложить не может?
Ответить с цитированием
  #10  
Старый 29.10.2011, 18:37
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Сделать программу, которая делает снимок всех доступных фалов - записывает имена, дату доступа,размер,можно md5
потом вторуюкоторая анализирует данные двух снимков
есть такие готовые, названий не знаю, я тоже такую делал, но забросил временно

Последний раз редактировалось Pyro, 29.10.2011 в 18:58.
Ответить с цитированием
  #11  
Старый 01.11.2011, 11:58
Der_G()RuNu(h Der_G()RuNu(h вне форума
Прохожий
 
Регистрация: 23.03.2011
Сообщения: 44
Репутация: -886
По умолчанию

Цитата:
Сообщение от Pyro
Сделать программу, которая делает снимок всех доступных фалов - записывает имена, дату доступа,размер,можно md5
потом вторуюкоторая анализирует данные двух снимков
интересная мысль...
спасибо
Ответить с цитированием
  #12  
Старый 01.11.2011, 13:18
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от Der_G()RuNu(h
интересная мысль...
да уж, особенно когда в системе 50000 файлов и 5000 папок - самый оптимальный вариант, ага
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #13  
Старый 01.11.2011, 13:43
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

И чтобы проверяла каждые 5 минут...
Чтобы винт вылетел с системника
Ответить с цитированием
  #14  
Старый 01.11.2011, 14:36
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

если без мд5 делать то можно всякую интерестную статистику вытаскивать, или поиск быстрый делать по sql, всякие древние файлы находить, у меня был такой скрипт я находил файлы, которые меняют мд5 но не меняют дату изменения в папке windows например
Ответить с цитированием
  #15  
Старый 03.11.2011, 13:57
Der_G()RuNu(h Der_G()RuNu(h вне форума
Прохожий
 
Регистрация: 23.03.2011
Сообщения: 44
Репутация: -886
По умолчанию

я пока что сделал проще:
по таймеры за определенное кол-во времени записываются в текстовый документ все открытые окна, невидимые, дочерние окна...

но это тоже не вариант...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:51.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter