Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CapiMonitor (https://www.delphipraxis.net/100192-capimonitor.html)

Explorer 24. Sep 2007 11:52


CapiMonitor
 
Hallo Forum,
ich hoffe, ich bin der richtigen Forumsparte gelandet.

Zur Sache:
Ich habe mir einen zugegebenermaßen einfachen, kleinen CapiMonitor gebaut, der auch mit dem dazu gehörenden Formular
problemlos funktioniert.

Mein eigentliches Ziel war jedoch, die Funktionen in eine dll einzubauen, um das monitoring in einer delphi-fremden
Datenbank nutzen zu können.

Seit Tagen "baue" ich nun an dem Teil leider ergebnislos herum.

Zwar gelingt es mir, via dll das integrierte Infofenster in der Datenbank zu aktivieren,
aber bei ankommenden Anrufen wird die Nummer nicht wie erwartet im Fenster angezeigt.

Irgendwo steckt ein Denkfehler, den ich nicht finde.
Vielleicht hat im Forum ja jemand den entscheidenden Tipp parat.

Mit besten Grüßen

Kisch


------------hier kommt der code----------

Delphi-Quellcode:

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.

f.siebler 24. Sep 2007 14:33

Re: CapiMonitor
 
Zitat:

delphi-fremden
Datenbank
was meinst du damit genau?

Explorer 25. Sep 2007 11:00

Re: CapiMonitor
 
Zitat:

Zitat von f.siebler
Zitat:

delphi-fremden
Datenbank
was meinst du damit genau?

TDB Studio, falls dies wesentlich zur Klärung meiner Anfrage beitragen sollte.

Mit besten Grüßen

Explorer

f.siebler 25. Sep 2007 11:10

Re: CapiMonitor
 
die frage ist ja, wie bindest du die dll. denn genau ein? Was machst du da? Wie sieht der Aufruf aus? usw.?


// Edit
Und um genaueres zu testen müsste man deine DLL übersetzten und testen können, was aber schlicht und einfach nicht möglich ist...
viel erfolg noch... :-)

Explorer 26. Sep 2007 10:07

Re: CapiMonitor
 
Zitat:

Zitat von f.siebler
die frage ist ja, wie bindest du die dll. denn genau ein? Was machst du da? Wie sieht der Aufruf aus? usw.?


// Edit
Und um genaueres zu testen müsste man deine DLL übersetzten und testen können, was aber schlicht und einfach nicht möglich ist...
viel erfolg noch... :-)

Es sieht so aus, als hätte ich mein Problem grundsätzlich gelöst. Der CapiConnect bedurfte eines Resets.

Mit besten Grüßen

Explorer


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz