![]() |
c# to Delphi Schnittstelle
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Abend,
ich bin am Verzweifeln und brauche ein wenig Hilfe. Ich muss in altes Delphi Programm ein Update vornehmen. In C# sieht mein Code folgendermaßen aus: private void StartInBackground() { _phoneListener = new ScreenPopTelephoneListener(); _phoneListener.Initialize("6000@XXX"); _phoneListener.StartListening("000"); _phoneListener.ScreenPop += new _IScreenPopTelephoneListenerEvents_ScreenPopEventH andler(ScreenPopEvent); this.Shutdown += new HiPathScreenPop_ShutdownEventHandler(HiPathScreenP op_Shutdown); } private void ScreenPopEvent(ScreenPopTelephoneEvent screenpoptelephoneevent) { Console.WriteLine(screenpoptelephoneevent.From); Console.WriteLine(screenpoptelephoneevent.Destinat ion); Console.WriteLine(screenpoptelephoneevent.QueueNam e); } Leider habe ich keine Ahnung wie das in Delphi gelöst wird. In Delphi 10.4 wurde mir die beigefügte TLB generiert. Delphi: var Listener : ScreenPopTelephoneListener; ... Listener := CoScreenPopTelephoneListener.Create; Listener.Initialize('6000@XXX'); Listener.StartListening('000'); Wie kann ich auf das Event ScreenPop in Delphi reagieren? (Function) Vielen Dank im voraus. |
AW: c# to Delphi Schnittstelle
Gibt es dazu noch irgendwie Doku oder so?
Ansonsten ein Schuss ins Blaue:
Delphi-Quellcode:
unit Unit3;
interface uses Winapi.Windows, System.SysUtils, System.Classes, Vcl.Controls, Vcl.Forms, HiPathProCenterScreenPopAPILibrary_TLB; type // musste ich jetzt selbst anlegen, gab es nur den dispinterface-Typen für??? IScreenPopTelephoneListenerEvents = interface ['{65CA62A4-921C-48B4-A4AA-20739C0F8EDA}'] function ScreenPop(const ScreenPopTelephoneEvent: IScreenPopTelephoneEvent): HResult; safecall; function StatusChanged(newStatus: enListenerStatus): HResult; safecall; end; TForm3 = class(TForm, IScreenPopTelephoneListenerEvents) private procedure StartInBackground; public function ScreenPop(const ScreenPopTelephoneEvent: IScreenPopTelephoneEvent): HRESULT; safecall; function StatusChanged(newStatus: enListenerStatus): HResult; safecall; end; var Form3: TForm3; implementation {$R *.dfm} { TForm3 } procedure TForm3.StartInBackground; var Listener: ScreenPopTelephoneListener; Events: _IScreenPopTelephoneListenerEvents; ScreenPopEvent: IScreenPopTelephoneEvent; begin Listener := CoScreenPopTelephoneListener.Create; Listener.Initialize('6000@XXX'); Listener.StartListening('000'); // Unklar, Doku fehlt! Wahrscheinlich eher nicht so gemeint! if Supports(Listener, _IScreenPopTelephoneListenerEvents, Events) then begin ScreenPopEvent := CoScreenPopTelephoneEvent.Create; Events.ScreenPop(ScreenPopEvent) end else begin // Eher der logischere Weg. Du implementierst das IScreenPopTelephoneListenerEvents selbst und // meldest es am Listener an, aber dafür fehlt eine Add- oder Register-Funktion in der importierten TLB-Unit. // Siehe auch die Konstanten SCREENPOP_CanNot_Register und SCREENPOP_Already_Registered // Also so zum Beispiel: Listener.AddEventListener(Self); oder Listener.RegisterEvents(Self); end; end; function TForm3.ScreenPop(const ScreenPopTelephoneEvent: IScreenPopTelephoneEvent): HRESULT; begin OutputDebugString(PChar(ScreenPopTelephoneEvent.From)); OutputDebugString(PChar(ScreenPopTelephoneEvent.Destination)); OutputDebugString(PChar(ScreenPopTelephoneEvent.QueueName)); Result := S_OK; end; function TForm3.StatusChanged(newStatus: enListenerStatus): HResult; begin end; end. |
AW: c# to Delphi Schnittstelle
Liste der Anhänge anzeigen (Anzahl: 1)
Oh wow, vielen Dank für die Rückmeldung.
Leider funktioniert dies auch nicht. Ja es gibt eine Doku, diese findest du im Anhang. Noch Ideen? |
AW: c# to Delphi Schnittstelle
Hm, wenn IScreenPopTelephoneListener das _IScreenPopTelephoneListenerEvents nicht unterstützt und in meinen Augen die Doku wenig Licht ins Dunkel bringt, würde ich an deiner Stelle an Unify mal eine Support Mail schreiben.
Vielleicht ist deren TLB auch nicht ganz richtig oder du hast beim Import was falsch angehakt. So richtig klar ist das Beispiel auf Seite 38 nicht. Vielleicht können sie dir ein Minimal-Beispiel schicken, was auf einer importierten TLB in einer nativen Sprache basiert?! |
AW: c# to Delphi Schnittstelle
Wenn du da mit Delphi nicht weiter kommst, dann entwickle das in C#.
In C# baust du dir dann eine C API oder einen COM-Server, welche(n) du dann in Delphi nutzt. Ein Webservice wäre auch noch eine Variante, da macht der Callback aber kein Spaß. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 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 by Thomas Breitkreuz