ECRIRE DANS L'OBSERVATEUR D'ÉVÉNEMENT WINDOWS

WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 - 27 juin 2007 à 18:26
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Derniè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.

https://codes-sources.commentcamarche.net/source/43264-ecrire-dans-l-observateur-d-evenement-windows

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
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és 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
28 juin 2007 à 09:09
Ca y est j'ai rajouté dans les snippets le code de Japee
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
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;

Que l'on appelle ainsi :

ErrorLog('Appli Test', 'Erreur...', EVENTLOG_ERROR_TYPE, 8999);
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
27 juin 2007 à 23:51
C'est ici : http://www.codyx.org/ (Menu principal/Autres langages/Codes snippets)

Cordialement.
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
27 juin 2007 à 23:26
Mais c'est ou les snippets ?
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
27 juin 2007 à 18:26
dominique.stock,

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.
Rejoignez-nous