delphimvcframework/lib/loggerpro/samples/100_udp_syslog/UDPServerClientForm.pas

98 lines
2.7 KiB
ObjectPascal
Raw Normal View History

unit UDPServerClientForm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent,
IdUDPBase, IdUDPServer, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Samples.Spin,
IdGlobal, IdSocketHandle, LoggerPro.UDPSyslogAppender;
type
TFUDPServerClientForm = class(TForm)
IdUDPServer: TIdUDPServer;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
UDPServerReceived: TMemo;
Panel1: TPanel;
UDPServerControl: TRadioGroup;
UDPClientControl: TRadioGroup;
UDPClientPort: TSpinEdit;
Label4: TLabel;
Label5: TLabel;
UDPServerPort: TSpinEdit;
UDPClientTimer: TTimer;
procedure UDPClientTimerTimer(Sender: TObject);
procedure UDPClientControlClick(Sender: TObject);
procedure UDPServerControlClick(Sender: TObject);
procedure IdUDPServerUDPRead(AThread: TIdUDPListenerThread;
const AData: TIdBytes; ABinding: TIdSocketHandle);
public
{ Public declarations }
end;
var
FUDPServerClientForm: TFUDPServerClientForm;
implementation
uses
LoggerPro, LoggerProConfig, Math;
const
STATUS_ON = 0;
STATUS_OFF = 1;
{$R *.dfm}
function GetPIDByHWND(const hWnd: THandle): THandle;
var
PID: DWORD;
begin
Result := 0;
if hWnd = 0 then Exit;
GetWindowThreadProcessID(hWnd, @PID);
Result := PID;
end;
procedure TFUDPServerClientForm.IdUDPServerUDPRead(
AThread: TIdUDPListenerThread; const AData: TIdBytes;
ABinding: TIdSocketHandle);
begin
UDPServerReceived.Lines.Add(BytesToString(AData, IndyTextEncoding_UTF8));
UDPServerReceived.Lines.Add('----------------');
SendMessage(UDPServerReceived.Handle, EM_LINESCROLL, 0, UDPServerReceived.Lines.Count);
end;
procedure TFUDPServerClientForm.UDPClientControlClick(Sender: TObject);
begin
UDPClientTimer.Enabled := UDPClientControl.ItemIndex = STATUS_ON;
if not UDPClientTimer.Enabled then Exit;
Appender.ProcID := IntToStr(GetPIDByHWND(Application.Handle));
Appender.Port := UDPClientPort.Value;
Appender.UserName := GetEnvironmentVariable('USERNAME');
Appender.HostName := GetEnvironmentVariable('COMPUTERNAME');
Appender.Application := ExtractFileName(ParamStr(0));
end;
procedure TFUDPServerClientForm.UDPClientTimerTimer(Sender: TObject);
begin
case RandomRange(0, 5) of
0: Log.Debug('debug message', 'DEBUG');
1: Log.Info('info message', 'INFO');
2: Log.Warn('warn message', 'WARN');
3: Log.Error('error message', 'ERROR');
4: Log.Info('Some Access Violation', 'INFO');
end;
end;
procedure TFUDPServerClientForm.UDPServerControlClick(Sender: TObject);
begin
IdUDPServer.Bindings[0].Port := UDPServerPort.Value;
IdUDPServer.Active := UDPServerControl.ItemIndex = STATUS_ON;
end;
end.