unit Ki_CapiMonitor;
interface
uses
inifiles, Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, ComCtrls, StdCtrls, Buttons, ExtCtrls,
CpMoni, CpConst;
///*** die DLL-Deklarationen
Procedure StarteCapiMonitor;
stdcall;
export;
implementation
type
TKisFenster =
class (TForm)
CapiMonitor1 : TCapiMonitor;
private
PanelTelefonnummer : TPanel;
PanelHintergrund : TPanel;
public
constructor Create(AOwner: TComponent);
override;
procedure LauscheAnIsdn;
procedure CapiMonitor1IncomingCall(CallingPartyNumber,
CalledPartyNumber:
String;
CipValue: Word;
CipValueString:
String);
// Procedure CapiMonitor1IncommingCall(CallingPartyNumber:String);
end;
var
KisFenster : TKisFenster =
Nil;
Controller : dWord;
RejectTimeOut : integer;
{Deklaration einer mit Nil initialisierten Instanzvariablen des Fensters,
damit bei jedem Aufruf einer DLL- Funktion(en) die Instanz verwendet
werden kann }
constructor TKisFenster.Create(AOwner: TComponent);
begin
CreateNew(AOwner);
CapiMonitor1 := TCapiMonitor.Create(
nil);
{Konstruktor CreateNew verwenden, weil es keine *.DFM- Datei zu dem Form gibt!}
//TKisFenster default-Werte einstellen
//mögliche Einstellungen ermitteln über zB 'KisFenster.SetBounds'
//aber so nicht verwenden, da im construktor-Mode wohl nicht zulässig
SetBounds (654,579,330,135);
Caption := '
ISDN Capi Monitor';
Position := poScreenCenter;
BorderStyle := bsDialog;
//PanelHintergrund anlegen:
PanelHintergrund := Tpanel.Create(Self);
{Initialisiere das HintergrundPanel mit default-Eigenschaften}
PanelHintergrund.Parent := Self;
PanelHintergrund.ParentBackground := False;
PanelHintergrund.ParentColor := False;
PanelHintergrund.SetBounds(8,38,305,28);
PanelHintergrund.BorderStyle := bsSingle;
PanelHintergrund.Color := clBtnHighlight;
PanelHintergrund.Ctl3D := True;
PanelHintergrund.Font.Charset := Default_CHARSET;
PanelHintergrund.Font.Color := clWindowText;
PanelHintergrund.Caption := '
';
//PanelTelefonnummer anlegen:
PanelTelefonnummer := Tpanel.Create(Self);
PanelTelefonnummer.Parent := Self;
{Initialisiere das TelefonnummerPanel mit default-Eigenschaften}
PanelTelefonnummer.ParentBackground := False;
PanelTelefonnummer.ParentColor := False;
PanelTelefonnummer.ParentCtl3D := False;
PanelTelefonnummer.ParentFont := False;
PanelTelefonnummer.SetBounds(10,40,300,23);
PanelTelefonnummer.Color := clMoneyGreen;
PanelTelefonnummer.Ctl3D := False;
PanelTelefonnummer.Font.Charset := ANSI_CHARSET;
PanelTelefonnummer.Font.Color := clBlue;
PanelTelefonnummer.Font.
Name := '
Arial';
PanelTelefonnummer.Font.Size := 10;
PanelTelefonnummer.Font.Style := [fsBold];
PanelTelefonnummer.Width := 300;
// SetBounds(100, 100, 100, 20);
PanelTelefonnummer.Caption := '
ISDN Telefonnummer';
// Caption := '0,0 % Fett';
// end;
end;
Procedure TKisFenster.LauscheAnIsdn;
begin
Controller := 1;
RejectTimeOut := 10;
CapiMonitor1.WaitForCall(Controller,RejectTimeOut)
end;
Procedure TKisFenster.CapiMonitor1IncomingCall(CallingPartyNumber,
CalledPartyNumber:
String;
CipValue: Word;
CipValueString:
String);
begin
Show;
if CallingPartyNumber <> '
'
then PanelTelefonnummer.Caption := CallingPartyNumber
else PanelTelefonnummer.Caption := '
unbekannt';
if IsIconic(Application.Handle)
and (CallingPartyNumber<>'
')
then Application.Title := CallingPartyNumber;
end;
//----- DLL-Export
Procedure StarteCapiMonitor;
stdcall;
export;
var
StringLaenge : integer;
CallingPartyNumber :
string;
CalledPartyNumber :
string;
CipValue : word;
CipValueString :
string;
begin
if KisFenster =
Nil then
KisFenster := TKisFenster.Create(
Nil);
KisFenster.LauscheAnIsdn;
KisFenster.CapiMonitor1IncomingCall(CallingPartyNumber,
CalledPartyNumber,CipValue,CipValueString);
/// Update ist wichtig, sonst gibts keine Veränderungsanzeige !!!
KisFenster.Update;
end;
initialization
finalization
{Fenster wieder löschen}
KisFenster.Free;
end.