Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Einträge ins Eventlog (https://www.delphipraxis.net/65661-eintraege-ins-eventlog.html)

Codewalker 19. Mär 2006 17:04


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?

Basilikum 19. Mär 2006 17:24

Re: Einträge ins Eventlog
 
dazu gibt es die API MSDN-Library durchsuchenReportEvent und Konsorten...

Codewalker 19. Mär 2006 20:04

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?

Basilikum 19. Mär 2006 21:28

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 http://msdn.microsoft.com/library/de...nt_logging.asp

(ein Beispiel habe ich leider nicht zur Hand)

generic 20. Mär 2006 00:27

Re: Einträge ins Eventlog
 
ich hatte mal auf meiner hp etwas auf die schnelle dazu geschrieben.

gugst du bitte hier:
http://www.quantendrehung.de/cms/p40.html

Codewalker 20. Mär 2006 16:34

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:

Luckie 21. Jul 2006 14:20

Re: Einträge ins Eventlog
 
Wenn ich diese
Code:
LanguageNames=(German=0x407:MSG00407)
MessageId=0
SymbolicName=evt_Demo
Language=German
Demo
.

Testeintrag von %1.
.
Message-Datei mit mc.exe kompilieren will, bekomme ich immer die Fehler:
Zitat:

EvtLogMsg.mc(8) : error : expected keyword - Testeintrag
EvtLogMsg.mc(8) : error : expected keyword - von
Obwohl sie genauso aufgebaut ist, wie in dem Tutorial.

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?

Luckie 21. Jul 2006 14:58

Re: Einträge ins Eventlog
 
So, habe es hinbekommen: Sie muss so aussehen:
Code:
LanguageNames=(German=0x407:MSG00407)

MessageId=0x1
SymbolicName=CAT_1
Language=German
Kategorie 1
.

MessageId=0x100
SymbolicName=MSG_DEMO_ENTRY
Language=German
Testeintrag von %1.
.
Aber leider funktioniert es immer noch nicht. Meine Registryeinträge sehen so aus:
Code:
[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"
Und mein dazugehöriger Programmcode:
Delphi-Quellcode:
{$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;
Ich bin etwas ratlos. :gruebel:

Muetze1 21. Jul 2006 15:26

Re: Einträge ins Eventlog
 
Schonmal hier geschaut und verglichen?

Luckie 21. Jul 2006 15:43

Re: Einträge ins Eventlog
 
Da geht es ums auslesen. Ich will aber was reinschreiben. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:35 Uhr.
Seite 1 von 3  1 23      

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