AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tapi Callback Funktion darf nicht in Klasse sein

Ein Thema von Jumpy · begonnen am 26. Nov 2012 · letzter Beitrag vom 27. Nov 2012
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#1

AW: Tapi Callback Funktion darf nicht in Klasse sein

  Alt 27. Nov 2012, 10:09
Zitat:
dwCallbackInstance
Instance data passed back to the application, which was specified by the application in the dwCallBackInstance parameter of lineInitializeEx. This DWORD is not interpreted by TAPI.
dwCallBackInstance = hInstance aus der Initialisierung?

Zitat:
LONG WINAPI lineInitializeEx(
LPHLINEAPP lphLineApp,
HINSTANCE hInstance,
LINECALLBACK lpfnCallback,
LPCSTR lpszFriendlyAppName,
LPDWORD lpdwNumDevs,
LPDWORD lpdwAPIVersion,
LPLINEINITIALIZEEXPARAMS lpLineInitializeExParams
);

hInstance
Instance handle of the client application or DLL. The application or DLL can pass NULL for this parameter, in which case TAPI uses the module handle of the root executable of the process (for purposes of identifying call handoff targets and media mode priorities).

aus der SysInit:
HInstance: LongWord; { Handle of this instance }
Hab mich heut morgen ein wenig durch die SDK gekämpft und da nichts weiteres dazu gefunden, wo das ausser in lineInitializeEx gesetzt werden könnte. So wie das bei unserem alten Code gesetzt wird, vermute ich da eher einen Handle o.ä. auf die Application:
Delphi-Quellcode:
var priv_hInstance:Cardinal;
    priv_hInstance := hInstance; //hInstance aus Sysinit
    lineInitializeEX(@priv_LineApp,priv_hInstance,priv_MyCallback,//...
Sehe leider nicht, wie ich das gebrauchen kann, um auf mein Objekt zu zeiegn. Werde also versuchen mein TapiApp-Object als Singelton zu implementieren.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.386 Beiträge
 
Delphi 12 Athens
 
#2

AW: Tapi Callback Funktion darf nicht in Klasse sein

  Alt 27. Nov 2012, 10:17
Delphi-Quellcode:
var priv_hInstance:Cardinal;
    priv_hInstance := hInstance; //hInstance aus Sysinit
    lineInitializeEX(@priv_LineApp,priv_hInstance,priv_MyCallback,//...
Sehe leider nicht, wie ich das gebrauchen kann, um auf mein Objekt zu zeiegn.
Statt hInstance den Instanz-Zeiger deines Objektes übergeben?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: Tapi Callback Funktion darf nicht in Klasse sein

  Alt 27. Nov 2012, 10:31
Kommando zurück. Hab komplett an der falschen Stelle gesucht. Der Parameter wird bei lineOpen übergeben, das man für jede Telefonleitung, die man überwachen will, aufruft.

Zitat:
LONG lineOpen(
HLINEAPP hLineApp,
DWORD dwDeviceID,
LPHLINE lphLine,
DWORD dwAPIVersion,
DWORD dwExtVersion,
DWORD dwCallbackInstance,
DWORD dwPrivileges,
DWORD dwMediaModes,
LPLINECALLPARAMS const lpCallParams
);

dwCallbackInstance

User-instance data passed back to the application with each message associated with this line or addresses or calls on this line. This parameter is not interpreted by the Telephony API.
Bei uns wurde da scheinbar immer die Nummer der Leitung übergeben, was aber unnötig ist, da man da ja auch den Handle der Leitung bekommt.
Also ist es ja vllt. doch möglich da einen Verweis auf mein Objekt hinzukriegen. Hoffe es hilft mir noch jemand nach der ganzen Verwirrung.

Wenn ich innerhalb meines Objectes für jede Line lineOpen aufrufe, wie kann ich dann dabei einen Pointer(?) auf mein Objekt in dwCallbackInstance mitgeben, das ja vom Typ DWORD ist?

Und wie muss ich dieses DWORD in der Callback-Funktion auswerten, um da wieder auf mein Objekt zu kommen? So wie shmia das andeutet, indem ich das in mein Objekt caste?
TMyTapi(dwCallbackInstance).
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.660 Beiträge
 
Delphi 12 Athens
 
#4

AW: Tapi Callback Funktion darf nicht in Klasse sein

  Alt 27. Nov 2012, 10:35
Unter Win32 (genauer: in 32Bit-Anwendungen) kannst Du Instanzen problemlos nach DWORD casten und zurück. Also kannst Du bei der Initialisierung dann DWORD(self) übergeben und im Callback dann mit TDeineKlasse(dwCallbackInstance) auf die Instanz zugreifen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 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