AdsAms[Un]RegisterRouterNotification

AdsAms[Un]RegisterRouterNotification 1:

Delphi 5 Programm

unit frmAdsAmsRegisterRouterNotificationUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, TcAdsDef, TcAdsApi, Buttons, ExtCtrls;

//define your own message id
const WM_ADSROUTERNOTIFICATION = WM_APP + 405;


type
  TfrmAdsAmsRegisterRouterNotification = class(TForm)
    BitBtn1: TBitBtn;
    Bevel1: TBevel;
    Button1: TButton;
    Label1: TLabel;
    Memo1: TMemo;
    Button2: TButton;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  protected
    procedure WMAdsRouterNotification( var Message: TMessage ); message WM_ADSROUTERNOTIFICATION;
  private
    { Private-Deklarationen }
    serverAddr : TAmsAddr;
  public
    { Public-Deklarationen }
    procedure InitData( destAddr : TAmsAddr);
  end;

var wndHandle : HWND;

implementation
{$R *.DFM}
//////////////////////////////////////////////////////////////////////////////
Procedure RouterCallback( nEvent:Longint ); stdcall;
begin
     PostMessage(wndHandle, WM_ADSROUTERNOTIFICATION, nEvent, 0);
end;
//////////////////////////////////////////////////////////////////////////////
procedure TfrmAdsAmsRegisterRouterNotification.WMAdsRouterNotification( var Message: TMessage );
var sState : String;
begin
     case Message.WParam of
      AMSEVENT_ROUTERSTOP: sState := 'ROUTER STOP';
      AMSEVENT_ROUTERSTART: sState:= 'ROUTER START';
      AMSEVENT_ROUTERREMOVED: sState:= 'ROUTER REMOVED';
     else
     sState := Format( 'Other: %d', [Message.WParam]);
     end;

     Memo1.lines.add(Format('%s, nEvent: %s',[TimeToStr(time), sState]));
     inherited;
end;
//////////////////////////////////////////////////////////////////////////////
procedure TfrmAdsAmsRegisterRouterNotification.InitData( destAddr : TAmsAddr );
begin
     serverAddr := destAddr;
     wndHandle := Handle;//Save the window handle
end;
//////////////////////////////////////////////////////////////////////////////
procedure TfrmAdsAmsRegisterRouterNotification.Button1Click(Sender: TObject);
var result : longint;
begin
     result := AdsAmsRegisterRouterNotification( @RouterCallback );
     Label1.Caption := Format( 'AdsAmsRegisterRouterNotification() result: %d [0x%x]', [result,result] );
     Button1.Enabled := not(result = ADSERR_NOERR);
     Button2.Enabled := (result = ADSERR_NOERR);
end;
//////////////////////////////////////////////////////////////////////////////
procedure TfrmAdsAmsRegisterRouterNotification.Button2Click(  Sender: TObject);
var result : longint;
begin
     Memo1.Lines.Clear();
     result := AdsAmsUnRegisterRouterNotification();
     Label1.Caption := Format( 'AdsAmsUnRegisterRouterNotification() result: %d [0x%x]', [result,result] );
     Button1.Enabled := true;
     Button2.Enabled := false;
end;

end.