Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   EventMonTray (NT4/2K/XP/2K3) (https://www.delphipraxis.net/6357-eventmontray-nt4-2k-xp-2k3.html)

Gast 7. Jul 2003 22:25


EventMonTray (NT4/2K/XP/2K3)
 
Hallo,

hab ein kleines schmutziges Prograemmchen zusammengehackt. Es alarmiert einen, sobald ein neues Ereignis in der Eventlog auftaucht.
Es blinkt dann ein TrayIcon! Ansonsten zeigt der TrayIcon-Hint an, wieviele Ereignisse in den einzelnen Logs sind.
Doppelklick aufs Icon oeffnet den EventViewer ... Rechtsklick beendet EventMonTray ... sicher noch erweiterungs- und verbesserungsbeduerftig ... aber es ist eben nur ein 2 Stunden-Proggy :mrgreen:

Viel Spass damit :) ... ist allerdings nur der "Quick'n'Dirty approach"

Die wichtigen Parts sind:

Delphi-Quellcode:
function MonitorThread(lParam: PNotifyIconData): DWORD; stdcall;
var
  i: Integer;
  ret: DWORD;
begin
  ResetCounter;
  for i := 0 to idx - 1 do
    NotifyChangeEventLog(logs[i], events[i]);
  while True do
  begin
    ret := WaitForMultipleObjects(idx, @events, False, 1000);
    if ret <> WAIT_TIMEOUT then
    begin
      Blink := True;
      ModifyTrayIconText;
    end;
  end;
  result := 0;
end;
Delphi-Quellcode:
        err := RegOpenKey(HKEY_LOCAL_MACHINE, servicekey, hReg);
        if err = ERROR_SUCCESS then
        try
          bufsize := sizeof(namebuf);
          ZeroMemory(@namebuf, bufsize);
          idx := 0;
          while RegEnumKeyEx(hReg, idx, @namebuf, bufsize, nil, nil, nil, @ft) = ERROR_SUCCESS do
          begin
            events[idx] := CreateEvent(nil, True, False, @Format(EventPrefix, [@namebuf])[1]);
            logs[idx] := OpenEventLog(nil, @namebuf);
            SetString(lognames[idx], PChar(@namebuf), lstrlen(@namebuf));
            bufsize := sizeof(namebuf);
            ZeroMemory(@namebuf, bufsize);
            inc(idx);
            if idx > maxlogs then
              Break;
          end;
        finally
          RegCloseKey(hReg);
        end;
Downloadbar als RAR und ZIP

Tpercon 8. Jul 2003 10:19

Re: EventMonTray (NT4/2K/XP/2K3)
 
Respekt!
Kannst du vielleicht diesen Part aus der MonitorThread function nochmal etwas erklären?
Delphi-Quellcode:
  for i := 0 to idx - 1 do
    NotifyChangeEventLog(logs[i], events[i]);

Gast 8. Jul 2003 13:01

Re: EventMonTray (NT4/2K/XP/2K3)
 
Dabei wird dem System jeweils ein Manual-Reset-Event (events[]) zugewiesen, welches signalisiert wird, sobald ein neuer Record in der Eventlog geschrieben wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz