Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 370

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Подскажите,пожалуйста, как отловить открытие папки и/или файла в Windows? Лучше с примером. Заранее спасибо.

Иванов Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Иванов (статус: Посетитель)
Вопрос отправлен: 24 февраля 2008, 08:48
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Drozdov D.V.

Здравствуйте, Иванов!
Вот вам примерчик по отслеживанию изменения файлов.
в едите задаёте путь и смотрети о всех изменениях.
Пример это ест в Delphi 8 net.
Удачи!

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs,wfsU, StdCtrls, CheckLst, ExtCtrls, Buttons;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Memo1: TMemo;
  12. Button1: TButton;
  13. Button2: TButton;
  14. Edit1: TEdit;
  15. Label1: TLabel;
  16. CheckBox1: TCheckBox;
  17. CheckBox2: TCheckBox;
  18. CheckBox3: TCheckBox;
  19. CheckBox4: TCheckBox;
  20. CheckBox5: TCheckBox;
  21. CheckBox6: TCheckBox;
  22. CheckBox7: TCheckBox;
  23. CheckBox8: TCheckBox;
  24. CheckBox9: TCheckBox;
  25. BitBtn1: TBitBtn;
  26. CheckBox10: TCheckBox;
  27. Button3: TButton;
  28. Panel1: TPanel;
  29. ListBox1: TListBox;
  30. procedure Button1Click(Sender: TObject);
  31. procedure Button2Click(Sender: TObject);
  32.  
  33. private
  34. { Private declarations }
  35. public
  36. { Public declarations }
  37. end;
  38.  
  39. var
  40. Form1: TForm1;
  41. LI:integer;
  42. Drive:char;
  43. DT:Cardinal;
  44. implementation
  45.  
  46. {$R *.dfm}
  47. procedure MyInfoCallBack(pInfo: TInfoCallBack);
  48. const
  49. Action: array[1..3] of String = ('Ñîçäàíèå: %s', 'Óäàëåíèå: %s', 'Èçìåíåíèå: %s');
  50. begin
  51.  
  52. case pInfo.FAction of
  53. FILE_ACTION_RENAMED_NEW_NAME: Form1.Memo1.Lines.Add(Format('Ïåðåèìåíîâàíèå: %s â %s',
  54. [pInfo.FDrive+pInfo.FOldFileName,pInfo.FDrive+pInfo.FNewFileName]));
  55. else
  56. if pInfo.FAction<FILE_ACTION_RENAMED_OLD_NAME then
  57. Form1.Memo1.Lines.Add(Format(Action[pInfo.Faction], [pInfo.FDrive+pInfo.FNewFileName]));
  58. end;
  59. {
  60. case pInfo.FAction of
  61. FILE_NOTIFY_CHANGE_FILE_NAME:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_FILE_NAME');
  62. FILE_NOTIFY_CHANGE_DIR_NAME:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_DIR_NAME');
  63. FILE_NOTIFY_CHANGE_ATTRIBUTES:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_ATTRIBUTES');
  64. FILE_NOTIFY_CHANGE_SIZE:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_SIZE');
  65. FILE_NOTIFY_CHANGE_LAST_WRITE:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_LAST_WRITE');
  66. FILE_NOTIFY_CHANGE_LAST_ACCESS:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_LAST_ACCESS');
  67. FILE_NOTIFY_CHANGE_CREATION:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_CREATION');
  68. FILE_NOTIFY_CHANGE_SECURITY:Form1.Memo1.Lines.Add('FILE_NOTIFY_CHANGE_SECURITY');
  69. end;}
  70. end;
  71.  
  72. procedure TForm1.Button1Click(Sender: TObject);
  73. var
  74. Flags:Cardinal;
  75. begin
  76. {
  77. FILE_NOTIFY_CHANGE_FILE_NAME = $00000001;//&#232;&#231;&#236;&#229;&#237;&#229;&#237;&#232;&#229; &#232;&#236;&#229;&#237;&#232; &#244;&#224;&#233;&#235;&#224;
  78. FILE_NOTIFY_CHANGE_DIR_NAME = $00000002;//&#232;&#231;&#236;. &#232;&#236;&#229;&#237;&#232; &#239;&#224;&#239;&#234;&#232;
  79. FILE_NOTIFY_CHANGE_ATTRIBUTES = $00000004;//&#224;&#242;&#240;&#232;&#225;&#243;&#242;&#238;&#226; &#244;&#224;&#233;&#235;&#224;
  80. FILE_NOTIFY_CHANGE_SIZE = $00000008;//&#240;&#224;&#231;&#236;&#229;&#240;&#224;
  81. FILE_NOTIFY_CHANGE_LAST_WRITE = $00000010;//&#239;&#238;&#241;&#235;&#229;&#228;&#237;&#229;&#233; &#231;&#224;&#239;&#232;&#241;&#232;
  82. FILE_NOTIFY_CHANGE_LAST_ACCESS = $00000020;//&#239;&#238;&#241;&#235;&#229;&#228;&#237;&#229;&#227;&#238; &#228;&#238;&#241;&#242;&#243;&#239;&#224;
  83. FILE_NOTIFY_CHANGE_CREATION = $00000040;//&#241;&#238;&#231;&#228;&#224;&#237;&#232;&#255;
  84. FILE_NOTIFY_CHANGE_SECURITY = $00000100;//&#239;&#240;&#224;&#226; &#228;&#238;&#241;&#242;&#243;&#239;&#224;
  85. }
  86. Flags:=0;
  87. if CheckBox2.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_FILE_NAME;
  88. if CheckBox3.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_DIR_NAME;
  89. if CheckBox4.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_ATTRIBUTES;
  90. if CheckBox5.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_SIZE;
  91. if CheckBox6.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_LAST_WRITE;
  92. if CheckBox7.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_LAST_ACCESS;
  93. if CheckBox8.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_CREATION;
  94. if CheckBox9.Checked then Flags:=Flags or FILE_NOTIFY_CHANGE_SECURITY;
  95. //&#226;&#234;&#235;&#254;&#247;&#224;&#255; &#239;&#238;&#228;&#234;&#224;&#242;&#224;&#235;&#238;&#227;&#232;
  96. StartWatch(Edit1.Text, Flags, CheckBox1.Checked, @MyInfoCallBack);
  97. end;
  98.  
  99. procedure TForm1.Button2Click(Sender: TObject);
  100. begin
  101. StopWatch;
  102. end;
  103.  
  104. end.


Ответ отправил: Drozdov D.V. (статус: 4-ый класс)
Время отправки: 24 февраля 2008, 20:07


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 7 ноября 2011, 12:02; участников в обсуждении: 2.
SideWalkeR

SideWalkeR (статус: Посетитель), 7 ноября 2011, 05:16 [#1]:

А какая часть кода отвечает именно за отлов открытия папки?
Drozdov D.V.

Drozdov D.V. (статус: 4-ый класс), 7 ноября 2011, 09:41 [#2]:

MyInfoCallBack
SideWalkeR

SideWalkeR (статус: Посетитель), 7 ноября 2011, 12:02 [#3]:

Action: array[1..3] of String = ('&#209;&#238;&#231;&#228;&#224;&#237;&#232;&#229;: %s', '&#211;&#228;&#224;&#235;&#229;&#237;&#232;&#229;: %s', '&#200;&#231;&#236;&#229;&#237;&#229;&#237;&#232;&#229;: %s');

Что значат последние 3 строки?

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:03
Выполнено за 0.02 сек.