2009-08-19 16 views
5

Chcę zobaczyć o rejestrowaniu zdarzeń z aplikacji Delphi 5 do dziennika systemu Windows, a także z innego wpisu here Widzę, że mogę użyć klasy TEventLogger, aby to zrobić.Jakieś światło dla TEventLogger?

Jednak nie mogę znaleźć dokumentacji dotyczącej składni procedury TEventLogger.LogMessage, więc nie wiem, jakie są wszystkie parametry, jak z nich korzystać, a nawet jakie są możliwe wartości.

Próbowałem się rozejrzeć, a jedyne, co znalazłem, to strona od Embarcadero, stwierdzająca, że ​​funkcja istnieje, ale nic na temat jej składni, a MSDN nie jest pomocna, ponieważ mogę znaleźć tylko wersję BizTalk, która nie jest dla mnie dobra .

Czy ktoś ma stronę pomocy lub informacje na ten temat, które mogą rzucić trochę światła na to, co mogę z tym zrobić?

Odpowiedz

8

TEventLogger to wewnętrzna klasa pomocnicza dla TService.

Użytkownik rejestruje komunikat za pomocą funkcji TService.LogMessage(), a nie bezpośrednio pod numerem TEventLogger. Parametry LogMessage() bezpośrednio odpowiadają parametrom funkcji Win32 API ReportEvent().

Szczegóły znajdziesz w dokumentacji interfejsu Win32 API.

Jeśli nie piszesz aplikacji usługowej, musisz zamiast tego wywołać funkcje Win32 API RegisterEventSource() i ReportEvent() bezpośrednio.

+0

To będzie dobra zabawa. W końcu będę potrzebować obu metod, ponieważ aplikacja może działać jako usługa (do której chcemy się podłączyć) lub samodzielny plik wykonywalny (który obecnie jest). Przynajmniej wiem, jak wykryć tryb, w którym działa i odpowiednio się przełączać. Dzięki za pomoc dla wszystkich. –

7

Prostym przykładem pisania aplikacji w dzienniku zdarzeń:

procedure WriteToLog(Msg:string; EventId: Word = 0); 
var 
    h: THandle; 
begin 
    h := RegisterEventSource(nil, PChar(Application.ExeName)); 
    if h > 0 then 
    try 
    ReportEvent(h, 0, 0, EventId, nil, 1, 0, @Msg, nil); 
    finally 
    DeregisterEventSource(h); 
    end; 
end; 

procedure TForm7.Button1Click(Sender: TObject); 
begin 
    WriteToLog('* Blah Blah Blah *'); 
end; 

Ale uwaga, że ​​nie registering the EventID with the system da tego rodzaju niejasnym Opis:

opisu dla identyfikatora zdarzenia (0) w Źródło (C: \ Documents i Ustawienia \ fgaillard \ Moje dokumenty \ RAD Studio \ Projects \ Project1.exe) nie można znaleźć . Komputer lokalny może nie mieć wymaganych informacji rejestru lub plików DLL komunikatów, aby wyświetlać komunikaty z komputera zdalnego komputera . Możesz użyć flagi/AUXSOURCE = do , aby pobrać ten opis; zobacz Pomoc i wsparcie w celu uzyskania szczegółowych informacji. Poniższe informacje są częścią wydarzenia: * Bla bla bla *.