Entwickler-Ecke
Windows API - Tapi Funktionsnamen Delphi / Microsoft // Methoden fehlen
Peter18 - Fr 04.04.14 16:54
Titel: Tapi Funktionsnamen Delphi / Microsoft // Methoden fehlen
Ein freundliches Hallo an alle,
ich möchte eine Wahlhilfe programmieren, die auch bei Geräten wie Fritzcard und Fritzbox funktioniert. Dazu habe ich mich mit der TAPI beschäftigt. Die Schnittstelle ist importiert (TAPI3Lib_TLB). Dabei zeigten sich Unterschiede bei den Methodennamen:
Mit
Delphi-Quelltext
1: 2:
| function tapiRequestMakeCall(lpszDestAddress : PChar; lpszAppName : PChar; lpszCalledParty : PChar; lpszComment : PChar) : Longint; stdcall; external 'TAPI32.DLL'; |
habe ich eine Wählhilfe mit Modem nutzen können. In der "TAPI3Lib_TLB" heißt die gleiche Funktion:
Delphi-Quelltext
1: 2:
| function MakeCall(const pDestAddress: WideString; const pAppName: WideString; const pCalledParty: WideString; const pComment: WideString): HResult; stdcall; |
Der Unterschied zwischen "tapiRequestMakeCall" und "MakeCall" erschwert natürlich die Suche nach passenden Funktionen.
Steckt da ein bestimmtes Schema hinter??
Um die Wahlhilfe bei einer Fritzcard oder Fritzbox verwenden zu können wäre es notwendig zu wählen, das Gespräch zu parken und dann auf das entsprechende Telefon durchzustellen. Entsprechende Funktionen sind in der TAPI anscheinend vorhanden, doch die Programmierhilfe zeigt sie mir nicht!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); var Tel : TAPI; Cal : RequestMakeCall;
begin Tel := CoTAPI.Create; Tel.Initialize; Cal := CoRequestMakeCall.Create; Cal.MakeCall( PChar( Edit1.Text ), PChar('App'), PChar('Ich'), PChar('Test')); end; |
Wenn ich "Cal." eingebe erscheint nur "MakeCall" aber nicht "BlindTransfer" oder andere Methoden. (Ist ja einfacher in einer solchen Liste zu stöbern als in der "TAPI3Lib_TLB"). Was hab' ich dort übersehen?
Grüße von der Nordsee
Peter
jaenicke - Fr 04.04.14 17:30
Bei Delphi XE5 kommt das so heraus:
Delphi-Quelltext
1: 2: 3: 4: 5:
| ITRequest = interface(IDispatch) ['{AC48FFDF-F8C4-11D1-A030-00C04FB6809F}'] function MakeCall(const pDestAddress: WideString; const pAppName: WideString; const pCalledParty: WideString; const pComment: WideString): HResult; stdcall; end; |
Da das also offenbar an der Delphiversion liegt, wirst du da leider nicht viel machen können.
Gab es denn in Delphi 4 den Typ WideString schon? Vielleicht ist das der Grund für den Unterschied. Ich meine mich zu erinnern, dass der erst später kam.
Peter18 - Fr 04.04.14 18:30
Hallo jaenicke,
Danke für Deine Antwort! Doch sorry, nicht die Parameter sind das Problem, sondern die Methodennamen. Wenn ich "tapiRequestMakeCall" bei MS finde bleibt die Frage wie heißt das Ding bei Delphi, nach welchem String suche ich in der "TAPI3Lib_TLB"? Finde ich "
lineBlindTransfer", wonach suche ich dann? "
BlindTransfer" ergibt einen Treffer.
Delphi 4 kennt "WideString". PChar in dem Beispiel stammt von mir aus der Zeit der Einarbeitung bei Delphi, da kannte ich "WideString" noch nicht.
Grüße von der Nordsee
Peter
Moderiert von
Narses: Beiträge zusammengefasstEin freundliches Hallo an alle,
die Frage nach den Methodennamen konnte ich inzwischen klären. Den Unterschied macht anscheinend die TAPI-Version.
Ich bin inzwischen auf eine Übersicht gestoßen, die das aufklärt. "lineMakeCall" ist TAPI 2.x, "Dial" heißt es bei TAPI 3.x.
Bleibt noch die Frage zu klären, wie "BlindTransfer" zu erreichen ist. Noch keine Idee!
Grüße von der Nordsee
Peter
jaenicke - Sa 05.04.14 00:20
Peter18 hat folgendes geschrieben : |
PChar in dem Beispiel stammt von mir aus der Zeit der Einarbeitung bei Delphi, da kannte ich "WideString" noch nicht. |
Ach so, jetzt verstehe ich. Die DLL hinten dran hatte ich vorhin im Büro beim Überfliegen nicht gesehen. Ich hatte gedacht das wäre bei dir nach dem Importieren herausgekommen.
Peter18 hat folgendes geschrieben : |
Bleibt noch die Frage zu klären, wie "BlindTransfer" zu erreichen ist. Noch keine Idee! |
Nach dem Importieren sieht das bei mir so aus:
Delphi-Quelltext
1: 2: 3: 4: 5:
| ITAddress = interface(IDispatch) ['{B1EFC386-9355-11D0-835C-00AA003CCABD}'] [...] function CreateCall(const pDestAddress: WideString; lAddressType: Integer; lMediaTypes: Integer): ITBasicCallControl; safecall; [...] |
Und darin:
Delphi-Quelltext
1: 2: 3: 4: 5:
| ITBasicCallControl = interface(IDispatch) ['{B1EFC389-9355-11D0-835C-00AA003CCABD}'] [...] procedure BlindTransfer(const pDestAddress: WideString); safecall; [...] |
Peter18 - Sa 05.04.14 18:58
Hallo Perlsau,
Dank Dir für die Antwort. Leider sieht es nach erster kurzer Sichtung danach aus, dass hier nur Einstellungen der Fritzbox bearbeitet werden. Das geht weitgehend über HTML. Die Tapi scheint dabei nicht vorzukommen. Ich möchte aber über Fritz (Box und Card) wählen und das Gespräch auf ein Telefon durchstellen. Bei eingehenden Gesprächen will ich die Rufnummer der Anrufers auswerten und mit gespeicherten vergleichen. Dafür brauche ich die TAPI und später TR064.
Hallo jaenicke,
auch dir Dank für Deine Antwort.
Ich hoffe jemand kann mir bei der Tapi weiterhelfen. Die Methoden sind in der "TAPI3Lib_TLB" enthalten, bisher bekomme ich jedoch immer eine Fehlermeldung, wenn ich sie Einsetze. Wahrscheinlich muß ich so etwas wie eine "Connection" einrichten, oder irgend etwas anderes. Vermutlich ist die Methode dann verfügbar. Da ich jedoch noch kaum Erfahrung mit Delphi-Schnittstellen habe übersehe ich warscheinlich etwas ganz triviales.
Grüße von der Nordsee
Peter
Peter18 - Mo 07.04.14 16:40
BeitragVerfasst: Sa 05.04.14 18:58
Hallo Perlsau,
nach etwas genauerer Sichtung sieht es so aus, als ob das ganze auf TR064 basiert. Es ist auch ein Anrufmonitor enthalten. Das könnte den Teil der Entwicklung beschleunigen.
Grüße von der ein wenig sonnigen Nordsee
Peter
Peter18 - Mi 16.04.14 11:36
Ein freundliches Hallo an alle,
inzwischen konnte ich herausfinden, wie das mit den "fehlenden" Methoden funktioniert. Leider habe ich nur minimale Informationen zu dem Thema Schnittstellen (eigentlich nur Andeutungen). Nachdem durchstöbern von einem halben Hundert Seiten der "TAPI3Lib_TLB" gelang es die Dispatch-Funktion zu verwenden ... und siehe da, vermißte Methoden erschienen. Für alle mit dem gleichen Problem:
Deklaration (Beispiel):
Delphi-Quelltext
1: 2: 3:
| var D : ITDispatchMapper; CI : ITCallInfo; |
Programm:
Delphi-Quelltext
1: 2:
| D := CoDispatchMapper.Create; D.QueryInterface( ITCallInfo, CI ); |
Mit "CI." erscheinen dann die Methoden von "ITCallInfo".
Grüße von der Nordsee
Peter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!