TAPI
TAPI
Hallo zusammen
stehe da vor einem problem und wollte mal fragen ob schon jemand erfahrung mit der TAPI schnittstelle von windows gemacht hat?
Ich sollte von einer FRITZ!Box Fon WLAN 7270 website --> http://www.avm.de
eingehende anrufe erhalten und die in meinem programm verarbeiten. ausserdem währe es cool wenn ich von meinem programm aus jemanden anrufen kann.
Aber eben, ich habe noch 0 erfahrung und weiss ehrlich gesagt gar nicht wo ich da beginnen muss, das einzige was ich mal getan habe ist tutorials durchgelesen die tapi beschreiben, finde jedoch nirgends wie man diese tapi auch ansteuern kann.
Danke für eure hilfe...
stehe da vor einem problem und wollte mal fragen ob schon jemand erfahrung mit der TAPI schnittstelle von windows gemacht hat?
Ich sollte von einer FRITZ!Box Fon WLAN 7270 website --> http://www.avm.de
eingehende anrufe erhalten und die in meinem programm verarbeiten. ausserdem währe es cool wenn ich von meinem programm aus jemanden anrufen kann.
Aber eben, ich habe noch 0 erfahrung und weiss ehrlich gesagt gar nicht wo ich da beginnen muss, das einzige was ich mal getan habe ist tutorials durchgelesen die tapi beschreiben, finde jedoch nirgends wie man diese tapi auch ansteuern kann.
Danke für eure hilfe...
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Also wenn ich in Google "Delphi TAPI" eingebe, lande ich da: http://tapi.delphiclub.de/
Und dort findet man alles was man braucht damit hab ich auch angefangen. Wenn du weitere Hilfe brauchst kannst mich fragen.
Und dort findet man alles was man braucht damit hab ich auch angefangen. Wenn du weitere Hilfe brauchst kannst mich fragen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
kA, kann sein das ich da noch ein paar sachen anpassen musste.
Hier hast meine Units, die lassen sich jedenfals problemlos mitm fpc comilieren.
Hier hast meine Units, die lassen sich jedenfals problemlos mitm fpc comilieren.
- Dateianhänge
-
- tapi.zip
- (151.47 KiB) 157-mal heruntergeladen
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Re:
slai hat geschrieben:Hey Christian
Danke für deine Units, nun kann ichs kompilieren und kann mir eine menge zeit sparen...
gruss
Es ist ja schon etwas her, aber ich wollte fragen ob die vielleicht eine Form mit einem Beispiel hast, welches du hier zeigen könntest.
Ich finde die Tapi Ansteuerung sehr interessant, aber leider eben auch nicht so einfach.
-
- Beiträge: 1445
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
- CPU-Target: 32/64Bit
Re: TAPI
@Christian, Danke für den Code!
Hier mein Beispiel:
Leider klappt das nicht so recht. In Windows startet zwar der Dialer und es erscheint ein Dialog, aber die Zeichen darin sind völlig korrupt. Ich habe schon alles probiert, UTF8ToAnsi, UTF8Decode, auch die Funktion tapiRequestMakeCallA / tapiRequestMakeCallW aufgerufen, aber immer das gleiche.
Weiß jemand Rat wie ich mein Code ändern muss, damit es geht (Win7/32)
Grüße Markus
Hier mein Beispiel:
Code: Alles auswählen
If Not Assigned(AssistedTAPI1) Then
Begin
AssistedTAPI1 := TAssistedTAPI.Create(Self);
AssistedTAPI1.OnInvalDestAddress := @AssistedTAPI1InvalDestAddress;
AssistedTAPI1.OnNoRequestRecipient := @AssistedTAPI1NoRequestRecipient;
AssistedTAPI1.OnRequestFailed := @AssistedTAPI1RequestFailed;
AssistedTAPI1.OnRequestQueueFull := @AssistedTAPI1RequestQueueFull;
end;
i := 1;
if Copy(sTel, 1, 1) = '+' then
sTel := StringReplace(sTel, '+', '00', []);
while i <= Length(sTel) do
begin
if sTel[i] in ['0'..'9'] then
Inc(i)
else
Delete(sTel, i, 1);
end;
ShowMessage(sTel + #10 + Caption + #10 + sName); // <<< hier sehe ich alles richtig
AssistedTAPI1.DestAddress := UTF8ToSys(sTel);
AssistedTAPI1.AppName := UTF8ToSys(Caption);
AssistedTAPI1.Comment := UTF8ToSys('');
AssistedTAPI1.CalledParty := UTF8ToSys(sName);
AssistedTAPI1.MakeCall;
Leider klappt das nicht so recht. In Windows startet zwar der Dialer und es erscheint ein Dialog, aber die Zeichen darin sind völlig korrupt. Ich habe schon alles probiert, UTF8ToAnsi, UTF8Decode, auch die Funktion tapiRequestMakeCallA / tapiRequestMakeCallW aufgerufen, aber immer das gleiche.
Weiß jemand Rat wie ich mein Code ändern muss, damit es geht (Win7/32)
Grüße Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de
Re: TAPI
Würde ggf. die Möglichkeit bestehen, die hpTapi (http://www.hbtapi.com/) Komponenten für Lazarus zu verwenden?
Habe diese bereits unter Delphi verwendet und die liefen dort einwandfrei.
Habe diese bereits unter Delphi verwendet und die liefen dort einwandfrei.
-
- Beiträge: 1445
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
- CPU-Target: 32/64Bit
Re: TAPI
Wohl müsste man diese HBTAPI Komponente auch umschreiben, sofern der Quellcode dabei ist.
Das original von Christian kommt von http://www.delphiclub.de/. Doch die Demos funktionieren nicht mehr unter Win7. Ich habe auch in Foren gelesen, dass diese Komponente "Hänger" hat. Das einzige ist "TAssistedTAPI" die einfach nur einen simplen Call aufruft. Das reicht auch für mein Programm. Wenn ich allerdings eingehende Anrufe zeigen lassen wollte, dann ginge das nicht.
Über TAPI gibt es unmengen Infos im Internet, allesamt unbrauchbar und TAPI ist enorm schlecht dokumentiert.
Hier meine umgeschriebene Funktion, damit wenigstens das Nummern Wählen geht. Man könnte das sicher auch besser machen, wenigstens geht das:
Das original von Christian kommt von http://www.delphiclub.de/. Doch die Demos funktionieren nicht mehr unter Win7. Ich habe auch in Foren gelesen, dass diese Komponente "Hänger" hat. Das einzige ist "TAssistedTAPI" die einfach nur einen simplen Call aufruft. Das reicht auch für mein Programm. Wenn ich allerdings eingehende Anrufe zeigen lassen wollte, dann ginge das nicht.
Über TAPI gibt es unmengen Infos im Internet, allesamt unbrauchbar und TAPI ist enorm schlecht dokumentiert.
Hier meine umgeschriebene Funktion, damit wenigstens das Nummern Wählen geht. Man könnte das sicher auch besser machen, wenigstens geht das:
Code: Alles auswählen
procedure TAssistedTAPI.MakeCall;
var R:LongInt;
aD, aA, aC: Array [0..255] of Byte;
i: Integer;
begin
For i := 1 To Length(FDestAddress) Do
aD[i - 1] := Ord(FDestAddress[i]);
aD[Length(FDestAddress)] := 0;
FAppName := Application.Title;
For i := 1 To Length(FAppName) Do
aA[i - 1] := Ord(FAppName[i]);
aA[Length(FAppName)] := 0;
For i := 1 To Length(FCalledParty) Do
aC[i - 1] := Ord(FCalledParty[i]);
aC[Length(FCalledParty)] := 0;
R:=tapiRequestMakeCall(@aD, @aA, @aC, PChar(''));
case R of
TAPIERR_INVALDESTADDRESS : if Assigned(FOnInvalDestAddress) then FOnInvalDestAddress(self);
TAPIERR_REQUESTQUEUEFULL : if Assigned(FOnRequestQueueFull) then FOnRequestQueueFull(self);
TAPIERR_NOREQUESTRECIPIENT: if Assigned(FOnNoRequestRecipient) then FOnNoRequestRecipient(self);
end;
end;
// der Aufruf;
AssistedTAPI1.DestAddress := UTF8ToSys(sTelDialPrefix + sTel);
AssistedTAPI1.AppName := UTF8ToSys(Caption);
AssistedTAPI1.Comment := UTF8ToSys('');
AssistedTAPI1.CalledParty := UTF8ToSys(sName);
AssistedTAPI1.MakeCall;
EleLa - Elektronik Lagerverwaltung - www.elela.de