WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 2012
-
27 juin 2007 à 18:26
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 2021
-
28 juin 2007 à 13:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 28 juin 2007 à 13:02
Salut Dominique.Stock.
Désolé, mais je ne vais pas pouvoir valider ton snippet, pour 2 raisons :
- le code est vraiment trop "inspiré" de celui de Hermann Weigl :
"Eintrag in die Ereignisanzeige schreiben"
http://www.dsdt.info/tipps/?id=647
- il faudrait éclaircir et approfondir un peu ce code afin surtout de permettre d'afficher la description de l'évènement dans l'observateur en fonction de l'id (idEvent), ce que le code ne fait pas en l'état...
Et dans ces conditions, le code a aussi sa place ici, puisque la rubrique "snippet" n'est pas faite pour développer de trop longues explications, mais pour être immédiatement utilisable.
A plus.
dominique.stock
Messages postés436Date d'inscriptionvendredi 7 novembre 2003StatutMembreDernière intervention 8 octobre 20087 28 juin 2007 à 09:09
Ca y est j'ai rajouté dans les snippets le code de Japee
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 28 juin 2007 à 01:53
Hello,
On peut même passer directement le type d'évènement, puisqu'il est déclaré dans Windows.pas :
procedure ErrorLog(App, Msg: string; EventType, IdEvent: integer);
var
hEventSource: THandle;
sString: array[0..1] of string;
begin
hEventSource := RegisterEventSource(nil, PChar(app));
if hEventSource > 0 then
begin
sString[0] := App;
sString[1] := Msg;
ReportEvent(hEventSource,
EventType,
1,
IDevent,
nil,
2,
0,
@sString,
nil);
DeregisterEventSource(hEventSource);
end;
end;
if hEventSource > 0 then
begin
sString[0] := app; // application
sString[1] := Msg; // message
ReportEvent( hEventSource,
EVENTLOG[Typ], // Type d'événement
1, // Catégory
IDevent, // Id event
nil, // user security identifier (optional)
2, // nb de chaine du message
0, // taille des données
@sString, // tableau des chaines à liés au message
nil); // ??
DeregisterEventSource(hEventSource);
end;
end;
P.S. La place de ce code serait plutot dans la section des snippets.
28 juin 2007 à 13:02
Désolé, mais je ne vais pas pouvoir valider ton snippet, pour 2 raisons :
- le code est vraiment trop "inspiré" de celui de Hermann Weigl :
"Eintrag in die Ereignisanzeige schreiben"
http://www.dsdt.info/tipps/?id=647
- il faudrait éclaircir et approfondir un peu ce code afin surtout de permettre d'afficher la description de l'évènement dans l'observateur en fonction de l'id (idEvent), ce que le code ne fait pas en l'état...
Et dans ces conditions, le code a aussi sa place ici, puisque la rubrique "snippet" n'est pas faite pour développer de trop longues explications, mais pour être immédiatement utilisable.
A plus.
28 juin 2007 à 09:09
28 juin 2007 à 01:53
On peut même passer directement le type d'évènement, puisqu'il est déclaré dans Windows.pas :
procedure ErrorLog(App, Msg: string; EventType, IdEvent: integer);
var
hEventSource: THandle;
sString: array[0..1] of string;
begin
hEventSource := RegisterEventSource(nil, PChar(app));
if hEventSource > 0 then
begin
sString[0] := App;
sString[1] := Msg;
ReportEvent(hEventSource,
EventType,
1,
IDevent,
nil,
2,
0,
@sString,
nil);
DeregisterEventSource(hEventSource);
end;
end;
Que l'on appelle ainsi :
ErrorLog('Appli Test', 'Erreur...', EVENTLOG_ERROR_TYPE, 8999);
27 juin 2007 à 23:51
Cordialement.
27 juin 2007 à 23:26
27 juin 2007 à 18:26
pourquoi une fonction ?
Ensuite, on peut supprimer l'utilisation de fTyp comme suit :
procedure ErrorLog(app, msg: string; typ, Idevent: integer);
const
EVENTLOG : array[0..4] of WORD =
( EVENTLOG_ERROR_TYPE // Erreur
, EVENTLOG_WARNING_TYPE // Attention
, EVENTLOG_INFORMATION_TYPE // Information
, EVENTLOG_AUDIT_SUCCESS // succés d'audit
, EVENTLOG_AUDIT_FAILURE // Erreur d'audit
) ;
var
hEventSource:THANDLE;
sstring: array [0..1] of string;
begin
hEventSource := RegisterEventSource(nil, PChar(app));
if hEventSource > 0 then
begin
sString[0] := app; // application
sString[1] := Msg; // message
ReportEvent( hEventSource,
EVENTLOG[Typ], // Type d'événement
1, // Catégory
IDevent, // Id event
nil, // user security identifier (optional)
2, // nb de chaine du message
0, // taille des données
@sString, // tableau des chaines à liés au message
nil); // ??
DeregisterEventSource(hEventSource);
end;
end;
P.S. La place de ce code serait plutot dans la section des snippets.
Cordialement.