unit VAXSIPUSERAGENTOCXLib_TLB;

// ************************************************************************ //
// WARNING
// -------
// The types declared in this file were generated from data read from a
// Type Library. If this type library is explicitly or indirectly (via
// another type library referring to this type library) re-imported, or the
// 'Refresh' command of the Type Library Editor activated while editing the
// Type Library, the contents of this file will be regenerated and all
// manual modifications will be lost.
// ************************************************************************ //

// PASTLWTR : $Revision:   1.130  $
// File generated on 9/6/2005 12:52:01 PM from Type Library described below.

// ************************************************************************  //
// LIBID: {AE632214-519A-4814-9230-ACB5E21AF5D8}
// LCID: 0
// DepndLst:
//   (1) v2.0 stdole, (C:\WINNT\SYSTEM32\STDOLE2.TLB)
//   (2) v4.0 StdVCL, (C:\WINNT\system32\stdvcl40.dll)
// ************************************************************************ //
// *************************************************************************//
// NOTE:
// Items guarded by $IFDEF_LIVE_SERVER_AT_DESIGN_TIME are used by properties
// which return objects that may need to be explicitly created via a function
// call prior to any access via the property. These items have been disabled
// in order to prevent accidental use from within the object inspector. You
// may enable them by defining LIVE_SERVER_AT_DESIGN_TIME or by selectively
// removing them from the $IFDEF blocks. However, such items must still be
// programmatically created via a method of the appropriate CoClass before
// they can be used.
{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers.
{$WARN SYMBOL_PLATFORM OFF}
{$WRITEABLECONST ON}

interface

uses ActiveX, Classes, Graphics, OleCtrls, OleServer, StdVCL, Variants,
Windows;


// *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:
//   Type Libraries     : LIBID_xxxx
//   CoClasses          : CLASS_xxxx
//   DISPInterfaces     : DIID_xxxx
//   Non-DISP interfaces: IID_xxxx
// *********************************************************************//
const
  // TypeLibrary Major and minor versions
  VAXSIPUSERAGENTOCXLibMajorVersion = 1;
  VAXSIPUSERAGENTOCXLibMinorVersion = 0;

  LIBID_VAXSIPUSERAGENTOCXLib: TGUID = '{AE632214-519A-4814-9230-ACB5E21AF5D8}';

  DIID__DVaxSIPUserAgentOCX: TGUID = '{4A2C16D4-81B6-4FEF-BA8E-23DD2E0377E3}';
  DIID__DVaxSIPUserAgentOCXEvents: TGUID = '{26C6929B-977A-41DC-A284-9417702E622B}';
  CLASS_VaxSIPUserAgentOCX: TGUID = '{39B816BE-816F-415B-9BFA-D96368FCAF40}';
type

// *********************************************************************//
// Forward declaration of types defined in TypeLibrary
// *********************************************************************//
  _DVaxSIPUserAgentOCX = dispinterface;
  _DVaxSIPUserAgentOCXEvents = dispinterface;

// *********************************************************************//
// Declaration of CoClasses defined in Type Library
// (NOTE: Here we map each CoClass to its Default Interface)
// *********************************************************************//
  VaxSIPUserAgentOCX = _DVaxSIPUserAgentOCX;


// *********************************************************************//
// DispIntf:  _DVaxSIPUserAgentOCX
// Flags:     (4112) Hidden Dispatchable
// GUID:      {4A2C16D4-81B6-4FEF-BA8E-23DD2E0377E3}
// *********************************************************************//
  _DVaxSIPUserAgentOCX = dispinterface
    ['{4A2C16D4-81B6-4FEF-BA8E-23DD2E0377E3}']
    procedure UnInitialize; dispid 1;
    function  Connect(const ToURI: WideString; const RTPIP: WideString; RTPPort: Integer): WordBool; dispid 2;
    function  Disconnect: WordBool; dispid 3;
    function  AcceptCall(const RTPIP: WideString; RTPPort: Integer): WordBool; dispid 4;
    function  RejectCall: WordBool; dispid 5;
    function  RegisterToProxy(Expire: Integer): WordBool; dispid 6;
    function  UnRegisterToProxy: WordBool; dispid 7;
    procedure DeselectAllVoiceCodec; dispid 8;
    procedure SelectAllVoiceCodec; dispid 9;
    function  GetVaxObjectError: Integer; dispid 10;
    function  GetMyIP: WideString; dispid 11;
    function  DigitDTMF(const Digit: WideString; Duration: Integer): WordBool; dispid 12;
    function  MuteMic(Mute: WordBool): WordBool; dispid 13;
    function  MuteSpk(Mute: WordBool): WordBool; dispid 14;
    function  GetMicVolume: Integer; dispid 15;
    function  SetMicVolume(Volume: Integer): WordBool; dispid 16;
    function  GetSpkVolume: Integer; dispid 17;
    function  SetSpkVolume(Volume: Integer): WordBool; dispid 18;
    function  EnableMicBoost: WordBool; dispid 19;
    function  DisableMicBoost: WordBool; dispid 20;
    function  IsMicBoostEnable: WordBool; dispid 21;
    function  EnableEchoNoiseCancellation: WordBool; dispid 22;
    function  DisableEchoNoiseCancellation: WordBool; dispid 23;
    function  StartRecording: WordBool; dispid 24;
    function  StopRecording: WordBool; dispid 25;
    function  ResetRecording: WordBool; dispid 26;
    function  SaveRecordingToWaveFile(const FileName: WideString): WordBool; dispid 27;
    function  PlayWaveOpen(const FileName: WideString): WordBool; dispid 28;
    function  PlayWaveSkipTo(Seconds: Integer): WordBool; dispid 29;
    function  PlayWaveTotalTime: Integer; dispid 30;
    function  PlayWavePause: WordBool; dispid 31;
    function  PlayWaveStart: WordBool; dispid 32;
    function  PlayWaveStop: WordBool; dispid 33;
    function  PlayWavePosition: Integer; dispid 34;
    procedure EnableDonotDisturb; dispid 35;
    procedure DisableDonotDisturb; dispid 36;
    function  DeselectVoiceCodec(CodecNo: Integer): WordBool; dispid 37;
    function  SelectVoiceCodec(CodecNo: Integer): WordBool; dispid 38;
    function  Initialize(ListenPort: Integer; InputDeviceId: Integer; OutputDeviceId: Integer;
                         const FromURI: WideString; const SIPOutBoundProxy: WideString;
                         const SIPProxy: WideString; const LoginId: WideString;
                         const LoginPwd: WideString): WordBool; dispid 39;
    function  SetLicenceKey(const LicenceKey: WideString): WordBool; dispid 40;
  end;

// *********************************************************************//
// DispIntf:  _DVaxSIPUserAgentOCXEvents
// Flags:     (4096) Dispatchable
// GUID:      {26C6929B-977A-41DC-A284-9417702E622B}
// *********************************************************************//
  _DVaxSIPUserAgentOCXEvents = dispinterface
    ['{26C6929B-977A-41DC-A284-9417702E622B}']
    procedure OnFailToUnRegister; dispid 1;
    procedure OnSuccessToUnRegister; dispid 2;
    procedure OnFailToRegister; dispid 3;
    procedure OnSuccessToRegister; dispid 4;
    procedure OnFailToConnect; dispid 5;
    procedure OnConnecting; dispid 6;
    procedure OnIncomingCall(const DisplayName: WideString; const UserName: WideString;
                             const FromURI: WideString); dispid 7;
    procedure OnIncomingCallRingingStart; dispid 8;
    procedure OnIncomingCallRingingStop; dispid 9;
    procedure OnDisconnectCall; dispid 10;
    procedure OnProvisionalResponse(StatusCode: Integer; const ReasonPhrase: WideString); dispid 11;
    procedure OnRedirectionResponse(StatusCode: Integer; const ReasonPhrase: WideString;
                                    const Contact: WideString); dispid 12;
    procedure OnRequestFailureResponse(StatusCode: Integer; const ReasonPhrase: WideString); dispid 13;
    procedure OnServerFailureResponse(StatusCode: Integer; const ReasonPhrase: WideString); dispid 14;
    procedure OnGeneralFailureResponse(StatusCode: Integer; const ReasonPhrase: WideString); dispid 15;
    procedure OnSuccessToConnect(TxCodecNo: Integer); dispid 16;
  end;


// *********************************************************************//
// OLE Control Proxy class declaration
// Control Name     : TVaxSIPUserAgentOCX
// Help String      : VaxSIPUserAgentOCX Control
// Default Interface: _DVaxSIPUserAgentOCX
// Def. Intf. DISP? : Yes
// Event   Interface: _DVaxSIPUserAgentOCXEvents
// TypeFlags        : (34) CanCreate Control
// *********************************************************************//
  TVaxSIPUserAgentOCXOnIncomingCall = procedure(Sender: TObject; const DisplayName: WideString;
                                                                 const UserName: WideString;
                                                                 const FromURI: WideString) of object;
  TVaxSIPUserAgentOCXOnProvisionalResponse = procedure(Sender: TObject; StatusCode: Integer;
                                                                        const ReasonPhrase: WideString) of object;
  TVaxSIPUserAgentOCXOnRedirectionResponse = procedure(Sender: TObject; StatusCode: Integer; 
                                                                        const ReasonPhrase: WideString; 
                                                                        const Contact: WideString) of object;
  TVaxSIPUserAgentOCXOnRequestFailureResponse = procedure(Sender: TObject; StatusCode: Integer; 
                                                                           const ReasonPhrase: WideString) of object;
  TVaxSIPUserAgentOCXOnServerFailureResponse = procedure(Sender: TObject; StatusCode: Integer; 
                                                                          const ReasonPhrase: WideString) of object;
  TVaxSIPUserAgentOCXOnGeneralFailureResponse = procedure(Sender: TObject; StatusCode: Integer; 
                                                                           const ReasonPhrase: WideString) of object;
  TVaxSIPUserAgentOCXOnSuccessToConnect = procedure(Sender: TObject; TxCodecNo: Integer) of object;

  TVaxSIPUserAgentOCX = class(TOleControl)
  private
    FOnFailToUnRegister: TNotifyEvent;
    FOnSuccessToUnRegister: TNotifyEvent;
    FOnFailToRegister: TNotifyEvent;
    FOnSuccessToRegister: TNotifyEvent;
    FOnFailToConnect: TNotifyEvent;
    FOnConnecting: TNotifyEvent;
    FOnIncomingCall: TVaxSIPUserAgentOCXOnIncomingCall;
    FOnIncomingCallRingingStart: TNotifyEvent;
    FOnIncomingCallRingingStop: TNotifyEvent;
    FOnDisconnectCall: TNotifyEvent;
    FOnProvisionalResponse: TVaxSIPUserAgentOCXOnProvisionalResponse;
    FOnRedirectionResponse: TVaxSIPUserAgentOCXOnRedirectionResponse;
    FOnRequestFailureResponse: TVaxSIPUserAgentOCXOnRequestFailureResponse;
    FOnServerFailureResponse: TVaxSIPUserAgentOCXOnServerFailureResponse;
    FOnGeneralFailureResponse: TVaxSIPUserAgentOCXOnGeneralFailureResponse;
    FOnSuccessToConnect: TVaxSIPUserAgentOCXOnSuccessToConnect;
    FIntf: _DVaxSIPUserAgentOCX;
    function  GetControlInterface: _DVaxSIPUserAgentOCX;
  protected
    procedure CreateControl;
    procedure InitControlData; override;
  public
    procedure UnInitialize;
    function  Connect(const ToURI: WideString; const RTPIP: WideString; RTPPort: Integer): WordBool;
    function  Disconnect: WordBool;
    function  AcceptCall(const RTPIP: WideString; RTPPort: Integer): WordBool;
    function  RejectCall: WordBool;
    function  RegisterToProxy(Expire: Integer): WordBool;
    function  UnRegisterToProxy: WordBool;
    procedure DeselectAllVoiceCodec;
    procedure SelectAllVoiceCodec;
    function  GetVaxObjectError: Integer;
    function  GetMyIP: WideString;
    function  DigitDTMF(const Digit: WideString; Duration: Integer): WordBool;
    function  MuteMic(Mute: WordBool): WordBool;
    function  MuteSpk(Mute: WordBool): WordBool;
    function  GetMicVolume: Integer;
    function  SetMicVolume(Volume: Integer): WordBool;
    function  GetSpkVolume: Integer;
    function  SetSpkVolume(Volume: Integer): WordBool;
    function  EnableMicBoost: WordBool;
    function  DisableMicBoost: WordBool;
    function  IsMicBoostEnable: WordBool;
    function  EnableEchoNoiseCancellation: WordBool;
    function  DisableEchoNoiseCancellation: WordBool;
    function  StartRecording: WordBool;
    function  StopRecording: WordBool;
    function  ResetRecording: WordBool;
    function  SaveRecordingToWaveFile(const FileName: WideString): WordBool;
    function  PlayWaveOpen(const FileName: WideString): WordBool;
    function  PlayWaveSkipTo(Seconds: Integer): WordBool;
    function  PlayWaveTotalTime: Integer;
    function  PlayWavePause: WordBool;
    function  PlayWaveStart: WordBool;
    function  PlayWaveStop: WordBool;
    function  PlayWavePosition: Integer;
    procedure EnableDonotDisturb;
    procedure DisableDonotDisturb;
    function  DeselectVoiceCodec(CodecNo: Integer): WordBool;
    function  SelectVoiceCodec(CodecNo: Integer): WordBool;
    function  Initialize(ListenPort: Integer; InputDeviceId: Integer; OutputDeviceId: Integer; 
                         const FromURI: WideString; const SIPOutBoundProxy: WideString; 
                         const SIPProxy: WideString; const LoginId: WideString; 
                         const LoginPwd: WideString): WordBool;
    function  SetLicenceKey(const LicenceKey: WideString): WordBool;
    property  ControlInterface: _DVaxSIPUserAgentOCX read GetControlInterface;
    property  DefaultInterface: _DVaxSIPUserAgentOCX read GetControlInterface;
  published
    property  TabStop;
    property  Align;
    property  DragCursor;
    property  DragMode;
    property  ParentShowHint;
    property  PopupMenu;
    property  ShowHint;
    property  TabOrder;
    property  Visible;
    property  OnDragDrop;
    property  OnDragOver;
    property  OnEndDrag;
    property  OnEnter;
    property  OnExit;
    property  OnStartDrag;
    property OnFailToUnRegister: TNotifyEvent read FOnFailToUnRegister write FOnFailToUnRegister;
    property OnSuccessToUnRegister: TNotifyEvent read FOnSuccessToUnRegister write FOnSuccessToUnRegister;
    property OnFailToRegister: TNotifyEvent read FOnFailToRegister write FOnFailToRegister;
    property OnSuccessToRegister: TNotifyEvent read FOnSuccessToRegister write FOnSuccessToRegister;
    property OnFailToConnect: TNotifyEvent read FOnFailToConnect write FOnFailToConnect;
    property OnConnecting: TNotifyEvent read FOnConnecting write FOnConnecting;
    property OnIncomingCall: TVaxSIPUserAgentOCXOnIncomingCall read FOnIncomingCall write FOnIncomingCall;
    property OnIncomingCallRingingStart: TNotifyEvent read FOnIncomingCallRingingStart write FOnIncomingCallRingingStart;
    property OnIncomingCallRingingStop: TNotifyEvent read FOnIncomingCallRingingStop write FOnIncomingCallRingingStop;
    property OnDisconnectCall: TNotifyEvent read FOnDisconnectCall write FOnDisconnectCall;
    property OnProvisionalResponse: TVaxSIPUserAgentOCXOnProvisionalResponse read FOnProvisionalResponse write FOnProvisionalResponse;
    property OnRedirectionResponse: TVaxSIPUserAgentOCXOnRedirectionResponse read FOnRedirectionResponse write FOnRedirectionResponse;
    property OnRequestFailureResponse: TVaxSIPUserAgentOCXOnRequestFailureResponse read FOnRequestFailureResponse write FOnRequestFailureResponse;
    property OnServerFailureResponse: TVaxSIPUserAgentOCXOnServerFailureResponse read FOnServerFailureResponse write FOnServerFailureResponse;
    property OnGeneralFailureResponse: TVaxSIPUserAgentOCXOnGeneralFailureResponse read FOnGeneralFailureResponse write FOnGeneralFailureResponse;
    property OnSuccessToConnect: TVaxSIPUserAgentOCXOnSuccessToConnect read FOnSuccessToConnect write FOnSuccessToConnect;
  end;

procedure Register;

resourcestring
  dtlServerPage = 'ActiveX';

implementation

uses ComObj;

procedure TVaxSIPUserAgentOCX.InitControlData;
const
  CEventDispIDs: array [0..15] of DWORD = (
    $00000001, $00000002, $00000003, $00000004, $00000005, $00000006,
    $00000007, $00000008, $00000009, $0000000A, $0000000B, $0000000C,
    $0000000D, $0000000E, $0000000F, $00000010);
  CControlData: TControlData2 = (
    ClassID: '{39B816BE-816F-415B-9BFA-D96368FCAF40}';
    EventIID: '{26C6929B-977A-41DC-A284-9417702E622B}';
    EventCount: 16;
    EventDispIDs: @CEventDispIDs;
    LicenseKey: nil (*HR:$80004005*);
    Flags: $00000000;
    Version: 401);
begin
  ControlData := @CControlData;
  TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnFailToUnRegister) - Cardinal(Self);
end;

procedure TVaxSIPUserAgentOCX.CreateControl;

  procedure DoCreate;
  begin
    FIntf := IUnknown(OleObject) as _DVaxSIPUserAgentOCX;
  end;

begin
  if FIntf = nil then DoCreate;
end;

function TVaxSIPUserAgentOCX.GetControlInterface: _DVaxSIPUserAgentOCX;
begin
  CreateControl;
  Result := FIntf;
end;

procedure TVaxSIPUserAgentOCX.UnInitialize;
begin
  DefaultInterface.UnInitialize;
end;

function  TVaxSIPUserAgentOCX.Connect(const ToURI: WideString; const RTPIP: WideString; 
                                      RTPPort: Integer): WordBool;
begin
  Result := DefaultInterface.Connect(ToURI, RTPIP, RTPPort);
end;

function  TVaxSIPUserAgentOCX.Disconnect: WordBool;
begin
  Result := DefaultInterface.Disconnect;
end;

function  TVaxSIPUserAgentOCX.AcceptCall(const RTPIP: WideString; RTPPort: Integer): WordBool;
begin
  Result := DefaultInterface.AcceptCall(RTPIP, RTPPort);
end;

function  TVaxSIPUserAgentOCX.RejectCall: WordBool;
begin
  Result := DefaultInterface.RejectCall;
end;

function  TVaxSIPUserAgentOCX.RegisterToProxy(Expire: Integer): WordBool;
begin
  Result := DefaultInterface.RegisterToProxy(Expire);
end;

function  TVaxSIPUserAgentOCX.UnRegisterToProxy: WordBool;
begin
  Result := DefaultInterface.UnRegisterToProxy;
end;

procedure TVaxSIPUserAgentOCX.DeselectAllVoiceCodec;
begin
  DefaultInterface.DeselectAllVoiceCodec;
end;

procedure TVaxSIPUserAgentOCX.SelectAllVoiceCodec;
begin
  DefaultInterface.SelectAllVoiceCodec;
end;

function  TVaxSIPUserAgentOCX.GetVaxObjectError: Integer;
begin
  Result := DefaultInterface.GetVaxObjectError;
end;

function  TVaxSIPUserAgentOCX.GetMyIP: WideString;
begin
  Result := DefaultInterface.GetMyIP;
end;

function  TVaxSIPUserAgentOCX.DigitDTMF(const Digit: WideString; Duration: Integer): WordBool;
begin
  Result := DefaultInterface.DigitDTMF(Digit, Duration);
end;

function  TVaxSIPUserAgentOCX.MuteMic(Mute: WordBool): WordBool;
begin
  Result := DefaultInterface.MuteMic(Mute);
end;

function  TVaxSIPUserAgentOCX.MuteSpk(Mute: WordBool): WordBool;
begin
  Result := DefaultInterface.MuteSpk(Mute);
end;

function  TVaxSIPUserAgentOCX.GetMicVolume: Integer;
begin
  Result := DefaultInterface.GetMicVolume;
end;

function  TVaxSIPUserAgentOCX.SetMicVolume(Volume: Integer): WordBool;
begin
  Result := DefaultInterface.SetMicVolume(Volume);
end;

function  TVaxSIPUserAgentOCX.GetSpkVolume: Integer;
begin
  Result := DefaultInterface.GetSpkVolume;
end;

function  TVaxSIPUserAgentOCX.SetSpkVolume(Volume: Integer): WordBool;
begin
  Result := DefaultInterface.SetSpkVolume(Volume);
end;

function  TVaxSIPUserAgentOCX.EnableMicBoost: WordBool;
begin
  Result := DefaultInterface.EnableMicBoost;
end;

function  TVaxSIPUserAgentOCX.DisableMicBoost: WordBool;
begin
  Result := DefaultInterface.DisableMicBoost;
end;

function  TVaxSIPUserAgentOCX.IsMicBoostEnable: WordBool;
begin
  Result := DefaultInterface.IsMicBoostEnable;
end;

function  TVaxSIPUserAgentOCX.EnableEchoNoiseCancellation: WordBool;
begin
  Result := DefaultInterface.EnableEchoNoiseCancellation;
end;

function  TVaxSIPUserAgentOCX.DisableEchoNoiseCancellation: WordBool;
begin
  Result := DefaultInterface.DisableEchoNoiseCancellation;
end;

function  TVaxSIPUserAgentOCX.StartRecording: WordBool;
begin
  Result := DefaultInterface.StartRecording;
end;

function  TVaxSIPUserAgentOCX.StopRecording: WordBool;
begin
  Result := DefaultInterface.StopRecording;
end;

function  TVaxSIPUserAgentOCX.ResetRecording: WordBool;
begin
  Result := DefaultInterface.ResetRecording;
end;

function  TVaxSIPUserAgentOCX.SaveRecordingToWaveFile(const FileName: WideString): WordBool;
begin
  Result := DefaultInterface.SaveRecordingToWaveFile(FileName);
end;

function  TVaxSIPUserAgentOCX.PlayWaveOpen(const FileName: WideString): WordBool;
begin
  Result := DefaultInterface.PlayWaveOpen(FileName);
end;

function  TVaxSIPUserAgentOCX.PlayWaveSkipTo(Seconds: Integer): WordBool;
begin
  Result := DefaultInterface.PlayWaveSkipTo(Seconds);
end;

function  TVaxSIPUserAgentOCX.PlayWaveTotalTime: Integer;
begin
  Result := DefaultInterface.PlayWaveTotalTime;
end;

function  TVaxSIPUserAgentOCX.PlayWavePause: WordBool;
begin
  Result := DefaultInterface.PlayWavePause;
end;

function  TVaxSIPUserAgentOCX.PlayWaveStart: WordBool;
begin
  Result := DefaultInterface.PlayWaveStart;
end;

function  TVaxSIPUserAgentOCX.PlayWaveStop: WordBool;
begin
  Result := DefaultInterface.PlayWaveStop;
end;

function  TVaxSIPUserAgentOCX.PlayWavePosition: Integer;
begin
  Result := DefaultInterface.PlayWavePosition;
end;

procedure TVaxSIPUserAgentOCX.EnableDonotDisturb;
begin
  DefaultInterface.EnableDonotDisturb;
end;

procedure TVaxSIPUserAgentOCX.DisableDonotDisturb;
begin
  DefaultInterface.DisableDonotDisturb;
end;

function  TVaxSIPUserAgentOCX.DeselectVoiceCodec(CodecNo: Integer): WordBool;
begin
  Result := DefaultInterface.DeselectVoiceCodec(CodecNo);
end;

function  TVaxSIPUserAgentOCX.SelectVoiceCodec(CodecNo: Integer): WordBool;
begin
  Result := DefaultInterface.SelectVoiceCodec(CodecNo);
end;

function  TVaxSIPUserAgentOCX.Initialize(ListenPort: Integer; InputDeviceId: Integer; 
                                         OutputDeviceId: Integer; const FromURI: WideString; 
                                         const SIPOutBoundProxy: WideString; 
                                         const SIPProxy: WideString; const LoginId: WideString; 
                                         const LoginPwd: WideString): WordBool;
begin
  Result := DefaultInterface.Initialize(ListenPort, InputDeviceId, OutputDeviceId, FromURI, SIPOutBoundProxy,
                              SIPProxy, LoginId, LoginPwd);
end;

function  TVaxSIPUserAgentOCX.SetLicenceKey(const LicenceKey: WideString): WordBool;
begin
  Result := DefaultInterface.SetLicenceKey(LicenceKey);
end;

procedure Register;
begin
  RegisterComponents('ActiveX',[TVaxSIPUserAgentOCX]);
end;

end.
