2016-10-27 1 views
0

JulMar(https://atapi.codeplex.com/)のTAPI 2.0ラッパーを使用していますが、問題があります。Atapi CallInfoChangeEventが起動しない

初期

void initTAPI() 
    { 

     myTAPI = new TapiManager("GetCaller"); 

     if (!myTAPI.Initialize()) 
     { 
      MessageBox.Show("FAILED!"); 
     }else 
     { 
      name = myTAPI.Lines[0].Name; 
      lineName = (myTAPI != null && myTAPI.Lines.Length > 0 ? name : string.Empty); 

      foreach(TapiLine line in myTAPI.Lines) 
      { 
       line.NewCall += this.OnNewCall; 
       line.Ringing += this.OnRinging; 
       line.CallStateChanged += this.OnCallState; 
       line.CallInfoChanged += this.OnCallInfo; 
      } 

      MessageBox.Show(lineName); 

     } 
    } 

だから私はlineNameを取得します。私は今、プログラムを介して番号をダイヤルすると、それは

OnCallState

private void OnCallState(object sender, CallStateEventArgs e) 
    { 
     if (InvokeRequired == true) 
     { 
      this.BeginInvoke(new EventHandler<CallStateEventArgs>(this.OnCallState), new object[] { sender, e }); 
      return; 
     } 

     label1.Text = "Outgoing Call..."; 
    } 

を発射しかし、私は実際にやりたいことは、着信呼の数を取得することですが、解雇されません。

private void OnCallInfo(object sender, CallInfoChangeEventArgs e) 
    { 
     if (InvokeRequired == true) 
     { 
      this.BeginInvoke(new EventHandler<CallInfoChangeEventArgs>(this.OnCallInfo), new object[] { sender, e }); 
      return; 
     } 

     label1.Text = "Incoming Call..."; 
    } 

OnCallInfo

それが唯一のx86で動作するので、私はターゲットを変更していないが、まだ成功することを、somehwere言います。

PS:同じマシンにコールマネージャー(ProCall)がインストールされているので、誰かがコールすると私に知らせるので、C#の情報も取得できるはずです。誰かが興味を持っている場合はここ

は、全体のコードです:http://pastebin.com/Q5W5iGun

答えて

1

TSPに応じて、情報メッセージを呼ぶかも知れませんが、TAPIはこれを行うには、ドライバを強制するものではありません。だから、TSPによっては、あなた自身で情報を得ることができます。 Win32 APIでは、これはlineGetCallInfo経由で行われます。

このatapiラッパーを簡単に見た後、これはTapiCallクラスのGatherCallInfoメソッドで発生します。しかし、私はこのラッパーでこれを手動で起動する方法は見当たりません。これをパブリックメソッドにするには、atapiソースを変更する必要があります。

+0

あなたは 'lineGetCallInfo'ようになりますどのように共有していただけません読んで?私はC#のListenersについてもかなり新しいです。ありがとう! – PrimuS

0

同じことをするTAPIの例を使用できます。唯一の違いは、さらに読み取るための新しいline.Monitor()メソッド

foreach (TapiLine line in tapiManager.Lines) 
     { 
      try 
      { 
       line.NewCall += OnNewCall; 
       line.CallStateChanged += OnCallStateChanged; 
       line.CallInfoChanged += OnCallInfoChanged; 
       line.Monitor(); 
      } 
      catch (TapiException ex) 
      { 
       LogError(ex.Message); 
      } 
     } 

あるこのhttps://atapi.codeplex.com/SourceControl/latest#Atapi/trunk/source/test/TcMon/TapiMonitorForm.cs

関連する問題