Aide pour un soft de gestion des appels entrants [TAPI] - C++ - Programmation
Marsh Posté le 25-06-2003 à 16:41:44
MSDN est ton amie et aide : regarde d ucote de LineCallBack passe en param ds le lineInitialise/Ex
Marsh Posté le 26-06-2003 à 10:37:33
Merci
Bon j'ai fait qqchose avec lineInitializeEx et un lineGetMessage... mais il ne catch aucun event, que le téléphone sonne ou pas
Voilà mon main :
PS : App est l'instance globale de ma classe principale Centrant
Code :
|
et ma classe Centrant :
Code :
|
et enfin la méthode Create :
Code :
|
Merci d'avance si jamais vous trouvez ce qui coince
Marsh Posté le 26-06-2003 à 11:39:31
Euh comprend pas trop ce que tu fais (deja faudrait mettre un peu propre ta classe car un peu le bordel genre le App.membre alros que t es deja ds ton instance ... petit bouquin C++ s imposerais )
Mais sinon a premiere vue :
- tu passe une callback a l'init
- tes lininitparam on sait pas ce qu ils valent
- mais bon tu attends evenement via les hEvent malgre que callback passe, et comme a mon avis pas mis flag ds param qui va bien il fait rien.
Marsh Posté le 26-06-2003 à 11:52:40
erf si, manquait le constructeur ,je mets bien le flag event ds l'option du event :
Code :
|
sinon effectivement les App. ne servent pas ds la méthode Create, mais ils servent ds le main (mais je crois pas qu'ils gênent si ? je les ai rajoutés pour un test, je suis plus sûr de rien là )
sinon qu'est-ce que tu veux dire par passer un callback à l'init stp ? En fait je pense que j'ai pas compris l'utilisation/utilité du callback, donc si tu pouvais m'en dire plus (sans un lien vers la msdn stp )
Merci bcp
Marsh Posté le 26-06-2003 à 12:37:28
Ben les callback c un des mecanismes qui pemettent de recuperer les event de TAPI. En gros, tu lui passes une fonction en parametre, et a chaque fois que qq chose se passe, TAPI appel cette fonctions avec les param, libre a toi de faire qqchose ou pas.
Sinon ca devrait donner un truc du genre :
Code :
|
Code :
|
Y a juste le dwCallbackInstance la jsuis pas sur qu'il soit pas interpreter (si c le cas et que on peut pas recup pointeur sur l'objet CMyTapi, faut passer par un pointeur static par exemple).
Marsh Posté le 26-06-2003 à 15:13:52
Ah oki, en fait j'ai une fonction
Code :
|
qui relève tous les messages, et dont un pointeur est passé en paramètre à lineInitialize d'ailleurs. (cf plus haut ).
Mon problème, c que dans mon main, le prog reste bloqué au WaitForSingleObject sur l'hEvent (cf plus haut aussi )
L'initialisation se passe bien, il me détecte toutes mes lignes et tout, mais refuse de faire remonter les events qui se passent dessus
Si t'as une idée d'où ça peut venir (c tout à fait possible que ça soit une erreur de syntaxe C++, je suis pas familier du tt avec ce langage )
Merci bcp encore
Marsh Posté le 26-06-2003 à 15:20:36
Ben le WaitForSingleObject c bloquant et ca attend que l evenement soit SET par qqun exterieur (donc TAPI ds ton cas). TAPI recoit un lineconnect mais doit certainement balancer le message ds la cb et pas mettre le hevent.
Ben c soit CB soit Hidden soit Event soit jssais plus comme methode pour recuperer les events, c est pas 2 a la fois.
Marsh Posté le 26-06-2003 à 15:34:11
j'ai mis NULL à la place du pointeur sur ma fonction CB dans l'appel à lineInitialize mais ça fait pareil
sinon je fais comment pour attendre le message avec le CB ? le mettre en attente jusqu'à un msg je veux dire, l'équivalent du WaitForSingleObject ?
Merci
Marsh Posté le 26-06-2003 à 15:53:53
Ben pour la CB c le code que je t ai passe (aux ereurs que j'ai introduit pres).
Le jour ou TAPI a un event tu passera ds la callback.
Enfin lire la MSDN ca serait un minimum quand mm.
Marsh Posté le 26-06-2003 à 15:55:28
non mais je veux dire.... faut mettre un while(1) ? parceque l'appel se produit pas au moment où tu lances le prog, faut bien le mettre en attente jusqu'à ce qu'arrive l'event...
Marsh Posté le 26-06-2003 à 15:56:11
sachant que je n'ai pas d'interface graphique, tout se fait en mode console, donc le prog s'arrête à la fin du main...
Marsh Posté le 26-06-2003 à 16:31:40
bon je pense (d'après la msdn ) que le mieux en mode console reste l'écoute d'events, mais j'ai tout configuré comme ils disent, l'initialisation se passe bien, mais je ne reçois rien (et j'ai viré le pointeur sur la CBfunc)...
:cry::cry::cry:
Marsh Posté le 26-06-2003 à 16:36:35
Ben pour le while c pe pas le mieu (enfin sauf si tu y colle un waitforsingleobject non infini ou un select ou autre).
Desole la j ai pas teste et pas la possiblite de teste les events (enfin tapi en general) donc peu pas te dire pkoi.
Marsh Posté le 25-06-2003 à 16:38:21
Salut,
J'essaie de faire un soft qui détecte les appels entrants, et affiche simplement le CallID (en mode console, sans utiliser les MFC).
Est-ce que quelqu'un pourrait me donner l'algo général à utiliser svp ? Parceque TAPI, c qd mm très galère
Je dois commencer par faire un lineInitialize, mais après je vois pas du tt comment récupérer les messages LINE_CALLSTATE (qui signifient qu'il y a un appel entrant).
Merci infiniment
Pilou
PS : La ligne téléphonique que je souhaite écouter est reliée à un PBX Alcatel (qui implémente TAPI, y'a pas de prob, j'ai déjà fait l'appli qui gère les appels sortants), et est une ligne RNIS.