Einzelnen Beitrag anzeigen

Gast
(Gast)

n/a Beiträge
 
#1

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

  Alt 7. Jul 2003, 22:25
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

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
  Mit Zitat antworten Zitat