Tapi

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

thomas
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Fr, 23. Sep 2005 16:07
Wohnort: Bad Oldesloe
Kontaktdaten:

Beitrag von thomas »

Hallo Markus.

Mein Gott Walter, da habe ich mich schon wieder vertan.

Datei : CustomMsg.ch

Code: Alles auswählen

#define MSG_LINE_CALLBACK        WM_USER + 100
#define MSG_END_LOOP             WM_USER + 101
#define MSG_SAY_HELLO            WM_USER + 102
C-Source:

Code: Alles auswählen

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <xpppar.h>
#include <xppcon.h>
//-------------------------------------------------------------------------------------------------------------------------
#pragma comment(lib,"kernel32")
#pragma comment(lib,"user32")
#pragma comment(lib,"gdi32")
//-------------------------------------------------------------------------------------------------------------------------
#include "CustomMsg.ch"
#define MYHEAPFLAGS (HEAP_GENERATE_EXCEPTIONS | HEAP_ZERO_MEMORY)
//-------------------------------------------------------------------------------------------------------------------------
static char szWndClassName[] = "ID_179070F5A3F843B396E91C41CEEAB84C" ; // UUID
HWND _hWnd_ = 0;
//-------------------------------------------------------------------------------------------------------------------------
static VOID FAR PASCAL lineCallbackFunc(DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
static LRESULT CALLBACK _WndProc_(HWND,UINT, WPARAM, LPARAM);
//-------------------------------------------------------------------------------------------------------------------------
XPPRET XPPENTRY APPINSTANCE( XppParamList pl){ _retnl( pl,(LONG) GetModuleHandle(NULL)); }
//-------------------------------------------------------------------------------------------------------------------------
XPPRET XPPENTRY MYLOOP_QUIT( XppParamList pl)
{
   if( _hWnd_ != NULL ) SendMessage( _hWnd_ , MSG_END_LOOP , 0 , 0 );
   _ret(pl);
}
//-------------------------------------------------------------------------------------------------------------------------
XPPRET XPPENTRY MYLOOP( XppParamList pl)
{
   MSG         msg;
   WNDCLASSEX  wndclass;

     wndclass.cbSize        = sizeof (wndclass) ;
     wndclass.style         = CS_HREDRAW;
     wndclass.lpfnWndProc   = _WndProc_ ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = (HINSTANCE) GetModuleHandle(NULL);
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szWndClassName;
     wndclass.hIconSm       = LoadIcon (NULL, IDI_APPLICATION);
     RegisterClassEx (&wndclass);

     _hWnd_ = CreateWindow(szWndClassName,"", WS_DISABLED , 0,0,1,1,NULL,NULL,(HINSTANCE) GetModuleHandle(NULL),NULL);
     while(GetMessage (&msg, NULL, 0, 0)) DispatchMessage (&msg) ;
     UnregisterClass(szWndClassName,(HINSTANCE) GetModuleHandle(NULL) );
     _hWnd_ = 0;
   _ret(pl);
}
//-------------------------------------------------------------------------------------------------------------------------
XPPRET XPPENTRY LP_MYCALLBACK( XppParamList pl){ _retnl(pl, (LONG) lineCallbackFunc ); }
//-------------------------------------------------------------------------------------------------------------------------
static VOID FAR PASCAL lineCallbackFunc(DWORD dw0,DWORD dw1,DWORD dw2,DWORD dw3,DWORD dw4,DWORD dw5,DWORD dw6,DWORD dw7,DWORD dw8,DWORD dw9,DWORD dw10)
{
   if( _hWnd_ != NULL )
   {
      DWORD szData[11];
      szData[0] = dw0; szData[1] = dw1; szData[2] = dw2; szData[3] = dw3; szData[4] = dw4; szData[5] = dw5;szData[6] = dw6;szData[7] = dw7;szData[8] = dw8;szData[9] = dw9;szData[10] = dw10;
      SendMessage( _hWnd_ , MSG_LINE_CALLBACK , 0 , (LPARAM)((void*) &szData) );
   }
}
//-------------------------------------------------------------------------------------------------------------------------
static LRESULT CALLBACK _WndProc_(HWND hWnd ,UINT nMsg ,WPARAM wp , LPARAM lp )
{

   switch( nMsg )
   {
      case MSG_LINE_CALLBACK :
      {
         DWORD * pData = (DWORD *)((void *) lp);
         ContainerHandle conr  = _conNew( NULLCONTAINER );
         ContainerHandle con0  = _conPutNL( NULLCONTAINER , (LONG) pData[0]);
         ContainerHandle con1  = _conPutNL( NULLCONTAINER , (LONG) pData[1]);
         ContainerHandle con2  = _conPutNL( NULLCONTAINER , (LONG) pData[2]);
         ContainerHandle con3  = _conPutNL( NULLCONTAINER , (LONG) pData[3]);
         ContainerHandle con4  = _conPutNL( NULLCONTAINER , (LONG) pData[4]);
         ContainerHandle con5  = _conPutNL( NULLCONTAINER , (LONG) pData[5]);
         ContainerHandle con6  = _conPutNL( NULLCONTAINER , (LONG) pData[6]);
         ContainerHandle con7  = _conPutNL( NULLCONTAINER , (LONG) pData[7]);
         ContainerHandle con8  = _conPutNL( NULLCONTAINER , (LONG) pData[8]);
         ContainerHandle con9  = _conPutNL( NULLCONTAINER , (LONG) pData[9])
         ContainerHandle con10 = _conPutNL( NULLCONTAINER , (LONG) pData[10]);

         _conCall( conr , "MyCall11p" , 11, con0, con1, con2, con3, con4, con5, con6, con7, con8, con9 , con10);
         _conRelease(conr);_conRelease(con0);_conRelease(con1);_conRelease(con2);
         _conRelease(con3);_conRelease(con4);_conRelease(con5);_conRelease(con6);
         _conRelease(con7);_conRelease(con8);_conRelease(con9);_conRelease(con10);
         return 0;
      }
      case MSG_END_LOOP:{ _hWnd_ = 0; DestroyWindow(hWnd);PostQuitMessage(0);return 0;}
      case WM_DESTROY:{PostQuitMessage(0);return 0;}
   }
   return DefWindowProc(hWnd,nMsg,wp,lp);
}
//-------------------------------------------------------------------------------------------------------------------------
XPPRET XPPENTRY PTR_TO_STR(XppParamList pl)
{
    ContainerHandle hString;
    LPSTR p  = (LPSTR) _parnl(pl,1);
    hString  = _conPutC(NULLCONTAINER, p);
    if (hString != NULLCONTAINER)
    {
       _conReturn(pl, hString);
          _conRelease(hString);
    }
    else
    {
   	* Fehler aufgetreten: gib NIL zurück. */
   	conReturn(pl, NULLCONTAINER);
   	}

return;
}
Gruß

Thomas
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Beitrag von Markus Walter »

Hallo Thomas,

danke für das Posting...

Ist es jetzt ganz unverschämt zu fragen, was ich mit dem C-Teil mache?
Also:
- wie kompilieren
- wie linken
- was in die Project.Xpj einbinden

Ich habe noch nie was mit C oder C-API gemacht...

Bin da völlig unwissend :cry:
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
thomas
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Fr, 23. Sep 2005 16:07
Wohnort: Bad Oldesloe
Kontaktdaten:

Beitrag von thomas »

Hallo Markus.

Vor dem Problem stand ich auch. Ich habe mir einen Open-Source C-Compiler (LCC) besorgt und
den Kram damit kompiliert. Schreibe mir eine PN mit der Deiner E-Mail, dann kann ich Dir die Dateien zusenden.

Gruß

Thomas
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Beitrag von Markus Walter »

Hallo Thomas,

soeben erfolgt...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
JanR
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 129
Registriert: Di, 18. Okt 2005 14:44

Beitrag von JanR »

Hi Thomas,

vielen Dank für die eMail.

Zur Anwendung habe ich eine Frage, da ich dort etwas nicht ganz verstehe.

>> getDeviceName(nIx)
gibt jeweils den Namen des installierten Modems zurück (wie z. B. AVM Modem ...

>> cProv := getProviderInfo(nIx)
gibt mir entweder "Windows Telephony Service Provider for Universal Modem Driver" oder "ISDN" zurück. Woher kommt eigentlich diese Provider Info?


>> IF UPPER(cProv) == "ALCATEL TAPI SERVICE PROVIDER"
Mit was muss ich denn jetzt cProv vergleichen?


In meinem Rechner ist eine ISDN FritzCard installiert.


Dankeschön

Jan
thomas
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Fr, 23. Sep 2005 16:07
Wohnort: Bad Oldesloe
Kontaktdaten:

Beitrag von thomas »

Hallo Jan.

Versuche es doch mal mit dem "Windows Telephony Service Provider for Universal Modem Driver",
oder test doch mal alle durch.

Gruß

Thomas
JanR
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 129
Registriert: Di, 18. Okt 2005 14:44

Beitrag von JanR »

Hallo Thomas,

das habe ich ausprobiert. Aber irgendwie passiert nichts, wenn man anruft. TapiLineOpen(nId) gibt 0 zurück.

Irgendeine Idee?
thomas
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Fr, 23. Sep 2005 16:07
Wohnort: Bad Oldesloe
Kontaktdaten:

Beitrag von thomas »

Hallo Jan.

Hol Dir doch mal die TapTapi per Dowload und installiere sie auf Deinem Rechner.
Im Ordner „C:\Programme\topTapi2\Samples\compiled“ findest Du einige Testprogramme,
mit denen Du die Tapi-Funktionen ausprobieren kannst.
Besonders das Programm TapiCaps.exe ist sehr interessant und listet alle Tapi-Service-Provider im Tree auf.
Schaue genau nach, welche Funktionen unter LINECALLINFO für Dein Service-Provider verfügbar sind.
Sind dort alle Funktionen geblockt, dann benötigst Du einen anderen TSP-Treiber für Deine Telefon-Hardware
bzw. ISDN-Karte.

Gruß

Thomas
JanR
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 129
Registriert: Di, 18. Okt 2005 14:44

Beitrag von JanR »

Hallo Thomas,

danke für deine schnelle Antwort. Habe es mal mit dem Tool getestet und es werden fast alle Funktionen geblockt. :(

Wo bekomme ich den TSP-Treiber her? Ich verwende die Fritz! ISDN Card.


Gruss
Jan
thomas
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Fr, 23. Sep 2005 16:07
Wohnort: Bad Oldesloe
Kontaktdaten:

Beitrag von thomas »

Hallo Jan.

Also AVM ist bezüglich Tapi-Service-Provider noch recht zickig.
Es gibt zwar einen TSP für die FritzFon Box, jedoch ist dieser mehr als Bata
und kann so gut wie gar nichts. Markus kann ein Liedchen dazu anstimmen.

Gruß

Thomas
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Beitrag von Markus Walter »

Lalalala....

Im Ernst der Tapi-TSP der Fritz!Box ist ein Witz. Da ich hier in meinem Büro kein anderes TAPI-fähiges Equipment habe, habe ich meine Tapi-Ambitionen etwas zurückgestellt...

Bleibt abzuwarten, ob und wann AVM da was besseres liefert (offiziellist der Tapi-TSP ohne Support...).
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
JanR
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 129
Registriert: Di, 18. Okt 2005 14:44

Beitrag von JanR »

Hallo Thomas,
Hallo Markus,

das ist doch total blöd. Was hast du denn für ISDN Geräte, mit denen es funktioniert?

Grüsse,
Jan
thomas
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Fr, 23. Sep 2005 16:07
Wohnort: Bad Oldesloe
Kontaktdaten:

Beitrag von thomas »

Hallo Jan.

Wir haben eine Alcatel Omni Office Telefonanlage im Einsatz, die direkt mit dem
LAN verbunden ist ( 3rd. Party Anbindung). Über 1st Party Anbindungen mit ISDN-Karten
habe ich leider auch keine Erfahrung.
Folge doch mal dem Link, dort findest Du einige wichtige Informationen.
http://www.grutzeck.de/service/tapi_lis ... SDN-Karten

Gruß

Thomas
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Hallo,
wer TAPI, CAPI, SMS etc. nutzen will, sollte sich mal das Programm Phoner unter http://www.phoner.de ansehen, Freeware mit ActiveX Komponente. Werde ich mir nach meinem Urlaub einmal genauer unter Xbase 1.9 ansehen.
Macht einen sehr guten Eindruck und nach einem kurzem Check spielt er auch mit installierten CAPI und TAPI-Treibern problemlos zusammen.
Viele Grüße
Wolfgang
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Wolfgang Ciriack hat geschrieben: wer TAPI, CAPI, SMS etc. nutzen will, sollte sich mal das Programm Phoner unter http://www.phoner.de ansehen, Freeware mit ActiveX Komponente. Werde ich mir nach meinem Urlaub einmal genauer unter Xbase 1.9 ansehen.
Macht einen sehr guten Eindruck und nach einem kurzem Check spielt er auch mit installierten CAPI und TAPI-Treibern problemlos zusammen.
sieht gut aus bis auf : "Vollduplex-fähige Soundkarte (16 Bit)".
tja da könnte es mit manchen "modernen" Mainboards und
onboard Soundchip Probleme geben ...

gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Wolfgang Ciriack hat geschrieben: Macht einen sehr guten Eindruck und nach einem kurzem Check spielt er auch mit installierten CAPI und TAPI-Treibern problemlos zusammen.
Es sieht richtig gut aus, leider hab ich Probleme damit unter W98se.

Er meckert bei mir das er COMCTL32.DLL > 4.80 bräuchte ... ich
hab eine 5.81 (allerdings stammt die von einem Symantec-Norton
Paket ...)

Es kann auch an meiner "Teles" liegen (AVM ist angesagt, obwohl
alle mit Capi > 2.0 gehen sollen).

dito ist mein "TapiSrv.exe" wohl nicht mehr der aktuelleste und
crashed bei der "Phoner v1.85beta".
cFos wird übrigens als TAPI Treiber erkannt !

bisschen entäuschend ist die "axPhoner.ocx", gibt es doch "nur"
6 Methods und 9 Propertys :

Code: Alles auswählen

CallNumber method
Disconnect method
HangUpNumber method
PhoneConvert method
SendDTMF method
SendSMS method

CalledMSN property 
CallerNumber property 
CallID property 
Direction property 
DisconnectReason property 
myPhoner property 
NumberOfCalls property 
Status property 
WindowEnabled property 
zu den VB sample die dabei lagen : man solle schon mal die RegClass
von Thoms Braun bereit halten. Auf dem erst Blick nichts "besonderes"
was sich nicht nach Xbase++ übersetzen liesse.

Grundsätzlich würde ich sagen : "Der Programmierer hat sehr viel
Ahnung" von ISDN/CAPI/TAPI. soweit erstmal mein erster Eindruck.

gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

FritzFax im LAN

Beitrag von AUGE_OHR »

hi,

hab was (neues?) zu den Thema :

http://www.winexperts.de/wintipps/show.asp?ID=509

das "wichtigste" dabei ist FritzLan: ftp://ftp.avm.de/tools/fritz_lan/deutsc ... _10000.exe

gruss by OHR
Jimmy
olaf870
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 128
Registriert: Mi, 26. Okt 2005 18:41
Wohnort: Berlin
Kontaktdaten:

Beitrag von olaf870 »

Hallo,
mein Telefonnummernproblem (siehe Beitrag 1 zu diesem Thema) habe ich nun selbst lösen können: Meine Lösung arbeitet zwar auf TAPI 3.0 Basis, ist dafür aber nicht so "anfällig" wie 2.x, herstellerunabhängig und braucht nur Windows und sonst nix.

Wer die Sourcen will, sage Bescheid.

Gruß
Olaf870
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Beitrag von Markus Walter »

Hallo Olaf,

hätte da schon Interesse...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
olaf870
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 128
Registriert: Mi, 26. Okt 2005 18:41
Wohnort: Berlin
Kontaktdaten:

Beitrag von olaf870 »

Hallo Markus,
Eine Mail an Dich ist unterwegs.
Gruß Olaf870
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Olaf,

me too, please ...

Jan
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Hallo Olaf,
sende mir doch bitte eine Mail mit deiner Lösung.
Viele Grüße
Wolfgang
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
olaf870 hat geschrieben: Wer die Sourcen will, sage Bescheid.
Ich bitte auch, danke.

gruss by OHR
Jimmy
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

ich ebenfalls, wenn möglich.
Danke
Klaus
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9356
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Olaf.

Ich kann, wenn Du das möchtest, den Code auch zum Download hier zur Verfügung stellen.
Herzlich,
Tom
Antworten