5

Delphi 5 アプリケーションから Windows ログへのイベントのログ記録について知りたいのですが、ここTEventLoggerの別の投稿から、クラスを使用してこれを行うことができることがわかります。

ただし、プロシージャの構文に関するドキュメントが見つからないため、TEventLogger.LogMessageすべてのパラメーターの意味、使用方法、または使用可能な値さえもわかりません。

私は周りを見回してみましたが、関数が存在することを示す Embarcadero のページしか見つかりませんでしたが、その構文については何もありません。また、MSDN は役に立たない BizTalk バージョンしか見つけることができないため、役に立ちません。

私がそれで何ができるかを明らかにする可能性のあるヘルプページまたは情報を誰かが持っていますか?

4

2 に答える 2

8

TEventLoggerの内部ヘルパー クラスですTService

TService.LogMessage()を直接呼び出すのではなく、関数を使用してメッセージをログに記録しますTEventLogger。のパラメーターは、Win32 API関数のパラメーターとLogMessage()直接一致します。ReportEvent()

詳細については、Win32 API ドキュメントを参照してください。

サービス アプリケーションを作成していない場合は、代わりに Win32 APIRegisterEventSource()ReportEvent()関数を直接呼び出す必要があります。

于 2009-08-20T00:08:56.353 に答える
7

イベント ログに書き込むアプリケーションの簡単な例:

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;

ただし、EventID をシステムに登録しないと、このような混乱した説明が 表示されることに注意してください。

ソース ( C:\Documents and Settings\fgaillard\My Documents\RAD Studio\Projects\Project1.exe ) のイベント ID ( 0 ) の説明が見つかりません。ローカル コンピュータに、リモート コンピュータからのメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがない可能性があります。/AUXSOURCE= フラグを使用して、この説明を取得できる場合があります。詳細については、ヘルプとサポートを参照してください。次の情報はイベントの一部です: * Blah Blah Blah *.

于 2009-08-20T00:49:48.807 に答える