Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2020, 05:53   #1
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,266
По умолчанию Перехват системного журнала

Здравствуйте. Подскажите как установить перехват записи в системный журнал? Т.е. как отловить что в определенном системном журнале добавилось событие и получить его данные?

Находил тему про системный журнал, но не понял как установить перехват. Чтение запросом "WQL" я находил, но это не то что нужно, т.к. читать журнал с периодом не вариант для отлова событий. А как сделать перехват не могу сообразить
Simply-Art вне форума Ответить с цитированием
Старый 21.05.2020, 04:49   #2
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,266
По умолчанию

Разобрался с кодом, но не с ресурсами. Добавляем файл FWEventLog.pas к проекту, далее пишем код:
Код:
uses
  ... FWEventLog;

type
 ...
  private
    procedure OnEventRead(Sender: TObject; EventRecord: TFWEventLogRecord);
  public
    EventLog: TFWEventLog;
  end;

procedure TForm1.OnEventRead(Sender: TObject; EventRecord: TFWEventLogRecord);
begin
if EventRecord.Number = 1 then
  begin
    // обрабатываем событие журнала
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  EventLog := TFWEventLog.Create('FWEventLogDemo');
  SourceName := RegEventSources[TFWLocalEventSources(2)];
  if (osRead in EventLog.OpenState) then EventLog.Close(osRead);
  if not EventLog.Open(TFWLocalEventSources(2), osRead) then
    //ShowMessage('ошибка открытия менеждера событий')
  else 
    if not EventLog.RegisterChangeNotify(OnEventRead) then
      //ShowMessage('ошибка регистрации')
    else
      //ShowMessage('все ок, перехват включен';
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// отключаем слежку
if (osRead in EventLog.OpenState) then EventLog.Close(osRead);
end;
В архиве найденный, на просторах интернета (https://rouse.drkb.ru/winapi.php), код, копирайты внутри проекта сохранены, можете попробовать списаться с автором)
Вложения
Тип файла: zip evntlog.zip (431.7 Кб, 2 просмотров)
Simply-Art вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для кросс журнала javvva Microsoft Office Excel 14 11.11.2019 10:48
Выбрать записи из системного журнала событий barskul Общие вопросы Delphi 10 03.08.2018 17:10
Парсинг ошибок из системного журнала system dmitrykzmn Visual C++ 12 14.05.2016 22:56
Редизайн логотипа журнала mutabor Свободное общение 12 17.07.2010 00:48
Название журнала raxp Свободное общение 34 28.03.2010 16:09