![]() |
Einträge ins Eventlog
Weiß jemand, wie ich über mein Programm eigene Einträge in das Eventlog von Windows XP eintrage? Ich möchte gerne Logeinträge teilweise darin eintragen mit einem kurzen Text, was passiert ist. Wie?
|
Re: Einträge ins Eventlog
dazu gibt es die API
![]() |
Re: Einträge ins Eventlog
Das sieht schon gut aus, aber wie benutze ich diese Funktion? Was trage ich denn bei dwEventID ein? Wenn ich das so eintrage gibt es irgendwelche komischen Fehler. Der Eintrag an sich ist vorhanden, aber wie füge ich dazu einen Text ein. Hast du vielleicht einen Beispielaufruf für mich?
|
Re: Einträge ins Eventlog
der Text wird vom Event-Viewer aufgrund der Event-Source und Event-ID aus einer DLL geladen... in diesem Text kannst du Platzhalter (in der Art von Format()/sprintf()) einbauen, die dann durch die beim Aufruf von ReportEvent angegebenen Strings ersetzt werden...
ich denke mal, du wirst nicht darum herum kommen, dich etwas in das Event-Logging einzulesen... ein guter Start wäre ![]() (ein Beispiel habe ich leider nicht zur Hand) |
Re: Einträge ins Eventlog
ich hatte mal auf meiner hp etwas auf die schnelle dazu geschrieben.
gugst du bitte hier: ![]() |
Re: Einträge ins Eventlog
Danke für die vielen schnellen Antworten. Damit sollte das hinzubekommen sein! Jetzt muss ich nur noch meinen Grips anstrengen! :gruebel:
|
Re: Einträge ins Eventlog
Wenn ich diese
Code:
Message-Datei mit mc.exe kompilieren will, bekomme ich immer die Fehler:
LanguageNames=(German=0x407:MSG00407)
MessageId=0 SymbolicName=evt_Demo Language=German Demo . Testeintrag von %1. . Zitat:
Desweiteren hätte ich da noch ein paar Fragen: Geht das auch ohne den zusätzlichen Eintrag in der Registry für mein Programm? Und geht es eventuell auch ohne diese Ressource? |
Re: Einträge ins Eventlog
So, habe es hinbekommen: Sie muss so aussehen:
Code:
Aber leider funktioniert es immer noch nicht. Meine Registryeinträge sehen so aus:
LanguageNames=(German=0x407:MSG00407)
MessageId=0x1 SymbolicName=CAT_1 Language=German Kategorie 1 . MessageId=0x100 SymbolicName=MSG_DEMO_ENTRY Language=German Testeintrag von %1. .
Code:
Und mein dazugehöriger Programmcode:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\Demo]
"CategoryCount"=dword:00000001 "TypesSupported"=dword:00000000 "EventMessageFile"="E:\\Delphi\\Sourcecodes\\In_Bearbeitung\\MpuWriteEventLog\\Project1.exe" "CategoryMessageFile"="E:\\Delphi\\Sourcecodes\\In_Bearbeitung\\MpuWriteEventLog\\Project1.exe"
Delphi-Quellcode:
Ich bin etwas ratlos. :gruebel:
{$R 'EvtLogMsg.res'}
var Form1 : TForm1; implementation {$R *.dfm} const cSourceName : string = 'Application'; // wir wollen in das EventLog "Anwendungen" schreiben procedure LogMessage(typ, kategorienr: word; nachrichtnr: Cardinal; parameter1: string); var log : THandle; pmsgArray : array[0..0] of PChar; begin log := OpenEventLog(nil, pchar(cSourceName)); if log > 0 then begin try pmsgArray[0] := PChar(parameter1); if not ReportEvent(log, typ, kategorienr, nachrichtnr, nil, 1, 0, @pmsgArray, nil) then ShowMessage(SysErrorMessage(GetLastError)); finally CloseEventLog(log); end; end else ShowMessage(SysErrorMessage(GetLastError)); end; procedure TForm1.Button1Click(Sender: TObject); begin LogMessage(EVENTLOG_INFORMATION_TYPE, $1, $100, 'Hallo'); end; |
Re: Einträge ins Eventlog
Schonmal
![]() |
Re: Einträge ins Eventlog
Da geht es ums auslesen. Ich will aber was reinschreiben. ;)
|
Re: Einträge ins Eventlog
Hallo Luckie,
vielleicht kann Dir das weiterhelfen: ![]() Grüße Klaus |
Re: Einträge ins Eventlog
Ich habe das jetzt ausprobiert:
Delphi-Quellcode:
Aber da erscheint auch kein Einztag im EventLog. :(
var
el: TEventLog; begin el := TEventLog.Create(nil); try el.Open('Application'); el.Report(EVENTLOG_INFORMATION_TYPE, 'test'); el.Close; finally FreeAndNil(el); end; |
Re: Einträge ins Eventlog
Das hilft Dir jetzt nicht weiter, aber bei mir tut es.
OS = w2k SP4 Grüße Klaus |
Re: Einträge ins Eventlog
Genau der selbe Aufruf, wie ich ihn gepostet habe? Ich habe hier Windows XP SP2. Dann muss es da noch irgendetwas zu beachten geben. Nur was?
|
Re: Einträge ins Eventlog
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, habe Deinen Aufruf einen Button zugeordnet.
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Eventlog, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var el: TEventLog; begin el := TEventLog.Create(nil); try el.Open('Application'); el.Report(EVENTLOG_INFORMATION_TYPE, 'test'); el.Close; finally FreeAndNil(el); end; end; end. Sonst habe ich nichts weiteres einstellen müßen. Grüße Klaus |
Re: Einträge ins Eventlog
Liste der Anhänge anzeigen (Anzahl: 1)
Probier doch mal den Code im Anhang bitte aus. In der Exe sind auch die nötigen Ressourcestrings enthalten. Du musst allerdings dann auchg erstmal die Reg-Datei mit den nötigen Informationen in die Registry importieren.
|
Re: Einträge ins Eventlog
Tja, bei mir funktioniert dein Programm :? .
Win XP Home SP2 |
Re: Einträge ins Eventlog
Steht da auch ein richtiger Text drinne? Es sollte drinne stehen:
Zitat:
Könnte jemand bitte auch mal den auskommentierten Code probieren? Was kann das sein? |
Re: Einträge ins Eventlog
Ich werde irre. Als Administrator geht es. Dabei hatte ich das Programm schon mit "Ausführen als..." gestarte, um es so zu probieren. Und das Eventlog hatte ich auch als Administrator geöffnet, aber nie was gesehen. Jetzt hab eich mich richtig als Admin angemeldt und was sehe ich? Dutzende von meinen Testeinträgen. :wall: Ergo hat es als eingeschränkter Benutzer auch schon geklappt, aber irgendwie werden die Einträge nicht korrekt angezeigt, wenn man das EventLog SnapIn mit "Ausführen als..." als Administrator öffnet. Hmpf. :?
Nachtrag: Es geht auch, wenn man als eingeschränkter Benutzer eingeloggt ist. Man sieht die Einträge aber nicht, wenn man die Ereignisanzeige mit runas (Administrtorenkonto) öffnet. Öffnet man sie normal, sieht man auch seine Einträge. OK, es funktioniert jetzt also alles bestens. Danke für eure Hilfe. Ich werde das mal alles in einem Artikel zusammenfassen. |
Re: Einträge ins Eventlog
Hallo zusammen,
die Ereigniseinträge kriege ich auch hin, jedoch würde ich gerne eine eigene Gruppe haben. Als Beispiel: "MeinProgramm". Weiß jmd. wie ich das realisieren kann. Ich habe mal gelesen, dass es keine WINAPI dafür geben soll, und man es nur unter NET machen kann.....stimmt das? Grüße Ralf |
Re: Einträge ins Eventlog
Ich meine in einer der letzten Ausgaben der Toolbox war genau dazu eine komplette Anleitung. Ich schau mal, ob ich die Ausgabe rausbekomme oder den Artikel in die Finger bekommen kann. Da war eigentlich gar nicht so viel bei (fast nur Registry-Einträge). Ansonsten kannst du ja mal schauen, ich denke die kann man easy nachbestellen.
|
Re: Einträge ins Eventlog
Zitat:
|
Re: Einträge ins Eventlog
Danke für die Infos, die Toolbox müsste ich auftreiben können, wenn ich die Lösung habe kann ich Sie ja mal posten wenn Ihr wollt.
Morgen direkt mal gucken...... Grüße Ralf |
Re: Einträge ins Eventlog
Hier übrigen mein Artikel:
![]() Such mal im MSDN nach ![]() |
Re: Einträge ins Eventlog
@Luckie
Danke werde ich mir mal angucken. In der Toolbox stand nur das drin was ich schon wusste. Dort werden auch keine Kategoreien angelegt. Ich habe die Toolbox 4 /2006 (juli/august) Grüße Ralf |
Re: Einträge ins Eventlog
Zitat:
Per Win32-Api muss man alles selber machen, für .NET gibts das vorgefertigt. :) Möglich ist es mit Beidem. :) |
Re: Einträge ins Eventlog
Bin fündig geworden:
![]() |
Re: Einträge ins Eventlog
@Codewalker
Danke, dass passt. Klappt auch soweit ganz gut. |
Re: Einträge ins Eventlog
Link to Delphi Magazine is dead :-(
If the license permits, please post here. Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz