![]() |
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. |
Re: CapiMonitor
Zitat:
|
Re: CapiMonitor
Zitat:
Mit besten Grüßen Explorer |
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... :-) |
Re: CapiMonitor
Zitat:
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