亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? outgoingform.cs

?? 一個完整的VB.NET tapi3.0 程序
?? CS
字號:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using JulMar.Tapi3;
using QuartzTypeLib;
using System.IO;
using System.Reflection;

namespace OutgoingSample
{
    public partial class OutgoingForm : Form
    {
        TCall currCall = null;
        TTerminal playbackTerminal = null;
        string PLAY_FILENAME;

        public OutgoingForm()
        {
            InitializeComponent();
        }

        private void OnLoad(object sender, EventArgs e)
        {
            PLAY_FILENAME = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + @"\welcome.wav";

            // Initialize TAPI
            if (tapi.Initialize() == 0)
            {
                MessageBox.Show("No TAPI devices available.");
                OnExit(this, EventArgs.Empty);
            }

            // Populate destination types
            cbDestinationType.Items.AddRange(new object[] {
                    LINEADDRESSTYPES.SDP,
                    LINEADDRESSTYPES.EmailName,
                    LINEADDRESSTYPES.DomainName,
                    LINEADDRESSTYPES.PhoneNumber,
                    LINEADDRESSTYPES.IPAddress
                    });

            // Populate our address combo box with all the available addresses.
            foreach (TAddress addr in tapi.Addresses)
            {
                // Add each voice-capable address
                if ((addr.MediaTypes & TAPIMEDIATYPES.AUDIO) != 0)
                    cbAddress.Items.Add(addr);
            }

            cbAddress.SelectedIndex = 0;
            cbDestinationType.SelectedIndex = 0;
        }

        private void OnDial(object sender, EventArgs e)
        {
            TAddress addr = (TAddress)cbAddress.SelectedItem;
            LINEADDRESSTYPES addrType = (LINEADDRESSTYPES) cbDestinationType.SelectedItem;

            TAPIMEDIATYPES mediaType = TAPIMEDIATYPES.AUDIO;
            if (addr.QueryMediaType(TAPIMEDIATYPES.VIDEO))
                mediaType |= TAPIMEDIATYPES.VIDEO;

            try
            {
                addr.Open(mediaType);
            }
            catch (TapiException ex)
            {
                // Invalid media mode? Try just datamodem for unimodem.
                if (ex.ErrorCode == unchecked((int)0x80040004))
                {
                    try 
                    { 
                        addr.Open(TAPIMEDIATYPES.DATAMODEM);  
                    }
                    catch
                    {
                        toolStripStatusLabel1.Text = ex.Message;
                    }
                }
                else
                {
                    toolStripStatusLabel1.Text = ex.Message;
                }
            }

            // Create a call -- this should always succeed
            currCall = addr.CreateCall(textDestination.Text, addrType, mediaType);
            if (currCall != null)
            {
                // Get the playback terminal from the call
                try
                {
                    playbackTerminal = currCall.RequestTerminal(
                        TTerminal.FilePlaybackTerminal,
                        TAPIMEDIATYPES.AUDIO, TERMINAL_DIRECTION.TD_CAPTURE);
                    if (playbackTerminal != null)
                    {
                        playbackTerminal.MediaPlayList = new string[] { PLAY_FILENAME };
                        //string[] names = playbackTerminal.MediaPlayList;
                        //playbackTerminal.Name;
                        currCall.SelectTerminalOnCall(playbackTerminal);
                    }
                    else
                    {
                        MessageBox.Show("Failed to retrieve playback terminal.");
                    }
                }
                catch (TapiException ex)
                {
                    MessageBox.Show(ex.Message);
                }


                //// If the address supports media streams, then select terminals on it.
                //if (addr.SupportsMediaStreams)
                //{
                //    // This walks through the streams of the call and selects the default terminal
                //    // for each one.
                //    currCall.SelectDefaultTerminals();
                //}

                try
                {
                    // Connect the call
                    currCall.Connect(false);
                    toolStripStatusLabel1.Text = "Placing call...";
                }
                catch (TapiException ex)
                {
                    toolStripStatusLabel1.Text = ex.Message;
                }
            }
        }

        private void OnDisconnect(object sender, EventArgs e)
        {
            if (currCall != null)
            {
                try
                {
                    currCall.Disconnect(DISCONNECT_CODE.DC_NORMAL);
                }
                catch (TapiException ex)
                {
                    toolStripStatusLabel1.Text = ex.Message;
                }
            }
        }

        private void OnExit(object sender, EventArgs e)
        {
            this.Close();
        }

        private void OnNewCall(object sender, TapiCallNotificationEventArgs e)
        {
            TCall newCall = e.Call;

            // If we are the owner of the call..
            if (newCall.Privilege == CALL_PRIVILEGE.CP_OWNER)
            {
                if (currCall != newCall)
                {
                    try
                    {
                        newCall.Disconnect(DISCONNECT_CODE.DC_REJECTED);
                    }
                    catch (TapiException ex)
                    {
                        toolStripStatusLabel1.Text = ex.Message;
                    }
                }
                else
                {
                    toolStripStatusLabel1.Text = "Call " + newCall.ToString();
                }
            }
        }

        private void OnCallStateChanged(object sender, TapiCallStateEventArgs e)
        {
            TCall thisCall = e.Call;
            if (thisCall == currCall)
            {
                toolStripStatusLabel1.Text = "Call " + currCall.ToString();
                if (e.State == CALL_STATE.CS_DISCONNECTED)
                {
                    currCall = null;
                    thisCall.Address.Close();
                }
                CheckControls();
            }
        }

        private void OnMediaEvent(object sender, TapiCallMediaEventArgs e)
        {
            // When the video rendering stream activates, popup the video window if it's available.
            if (e.Event == CALL_MEDIA_EVENT.CME_STREAM_ACTIVE)
            {
                TStream stm = e.Stream;
                if (stm.Direction == TERMINAL_DIRECTION.TD_RENDER &&
                    stm.MediaType == TAPIMEDIATYPES.VIDEO)
                {
                    TTerminal t = stm.FindTerminal(stm.MediaType, stm.Direction);
                    if (t != null)
                    {
                        IVideoWindow vw = t.QueryInterface(typeof(IVideoWindow)) as IVideoWindow;
                        if (vw != null)
                        {
                            // Position to the right
                            vw.SetWindowPosition(this.Left + this.Width + 2, this.Top, vw.Width, vw.Height);
                            vw.Visible = 1;
                        }
                    }
                }
                else if (currCall != null && 
                    stm.Direction == TERMINAL_DIRECTION.TD_CAPTURE &&
                    stm.MediaType == TAPIMEDIATYPES.AUDIO &&
                    playbackTerminal != null)
                {
                    try
                    {
                        playbackTerminal.Start();
                        toolStripStatusLabel1.Text = "File Playback Terminal started ";
                    }
                    catch (TapiException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }

                }
            }
        }

        private void OnClose(object sender, FormClosingEventArgs e)
        {
            // Shutdown TAPI
            tapi.Shutdown();
        }

        private void Destination_TextChanged(object sender, EventArgs e)
        {
            CheckControls();
        }

        private void cbAddress_SelectedIndexChanged(object sender, EventArgs e)
        {
            CheckControls();
        }

        private void cbDestination_SelectedIndexChanged(object sender, EventArgs e)
        {
            CheckControls();
        }

        private void CheckControls()
        {
            btnDisconnect.Enabled = currCall != null;

            if (cbDestinationType.SelectedIndex >= 0 &&
                textDestination.Text.Length > 0 &&
                cbAddress.SelectedIndex >= 0)
            {
                TAddress addr = (TAddress)cbAddress.SelectedItem;
                LINEADDRESSTYPES addrType = (LINEADDRESSTYPES) cbDestinationType.SelectedItem;
                
                btnDial.Enabled = (currCall == null && (addr.get_AddressCapability(ADDRESS_CAPABILITY.AC_ADDRESSTYPES) & (int)addrType) != 0);
            }
            else
                btnDial.Enabled = false;
        }

        private void OnFileTerminal(object sender, TapiFileTerminalEventArgs e)
        {
            // We are interested in TMS_IDLE because we will un-select playback and 
            // select recording
            if (e.State == TERMINAL_MEDIA_STATE.TMS_IDLE)
            {
                if (e.Terminal.Direction == TERMINAL_DIRECTION.TD_RENDER && 
                    playbackTerminal != null)
                {
                    try
                    {
                        // Remove the playback terminal
                        currCall.UnselectTerminalOnCall(playbackTerminal);
                        playbackTerminal.Dispose();
                        playbackTerminal = null;

                        // Generate a custom tone on the call.
                        currCall.GenerateCustomTones(new TCustomTone[] { new TCustomTone(700, 500, 0, 0xFFFF) }, 500);

                        // Disconnect the call
                        currCall.Disconnect(DISCONNECT_CODE.DC_NORMAL);
                    }
                    catch (TapiException ex)
                    {
                        MessageBox.Show(ex.Message);
                        currCall.Disconnect(DISCONNECT_CODE.DC_NORMAL);
                    }
                }
            }
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品99久| 久久免费国产精品 | 精品国产免费一区二区三区四区| 亚洲国产一区二区在线播放| 欧美日韩成人激情| 成人免费黄色在线| 色噜噜狠狠成人网p站| 欧美中文字幕亚洲一区二区va在线 | 暴力调教一区二区三区| 国产精品理论在线观看| 国产99久久久久| 国产成人精品综合在线观看| 在线视频综合导航| 色天使色偷偷av一区二区| 91农村精品一区二区在线| caoporn国产精品| 欧美日韩一区二区欧美激情 | 欧美日韩国产高清一区二区| 狠狠v欧美v日韩v亚洲ⅴ| 蜜臀精品一区二区三区在线观看 | 91久久精品一区二区三| 亚洲一区二区三区自拍| 91精品久久久久久久91蜜桃| 韩国成人精品a∨在线观看| 综合久久久久综合| 日韩久久久久久| bt欧美亚洲午夜电影天堂| 日韩高清一区二区| 国产精品国产成人国产三级| 91精品国产美女浴室洗澡无遮挡| 国产精品一品二品| 日韩高清不卡一区二区| 中文字幕一区二区5566日韩| 欧美高清视频www夜色资源网| 国产乱对白刺激视频不卡| 亚洲另类春色国产| 久久久综合精品| 在线不卡的av| 色综合天天综合网天天狠天天| 免费看黄色91| 亚洲精品欧美二区三区中文字幕| 精品久久久久久久一区二区蜜臀| 91麻豆蜜桃一区二区三区| 激情av综合网| 肉丝袜脚交视频一区二区| 中文字幕一区日韩精品欧美| 欧美一级国产精品| 日本国产一区二区| 大桥未久av一区二区三区中文| 蜜桃视频在线观看一区二区| 亚洲综合色自拍一区| 国产精品美女久久久久久| 欧美sm美女调教| 538在线一区二区精品国产| 91视视频在线观看入口直接观看www | 欧洲av在线精品| 亚洲精品久久7777| 国产精品麻豆视频| 色欲综合视频天天天| 亚洲蜜臀av乱码久久精品蜜桃| av动漫一区二区| 亚洲男帅同性gay1069| 欧美日韩免费电影| 免费看日韩a级影片| 日韩欧美一区二区视频| av在线不卡网| 欧美高清一级片在线观看| 欧美mv日韩mv国产| 日韩三级视频中文字幕| 欧美日韩国产123区| 欧美中文字幕一区二区三区亚洲| 福利视频网站一区二区三区| 国内久久精品视频| 国产一区二区调教| 国产一区二区精品在线观看| 精久久久久久久久久久| 国产一区视频导航| 成人天堂资源www在线| 成人一区二区视频| 成人av网址在线| www.性欧美| 一本高清dvd不卡在线观看| 色88888久久久久久影院野外| 色综合中文字幕国产| 成人永久免费视频| 99久久综合国产精品| 91丨porny丨在线| 欧美午夜精品理论片a级按摩| 欧美无砖专区一中文字| 在线播放欧美女士性生活| 日韩一区二区三区视频在线观看| 精品日韩在线观看| 久久久久久一二三区| 欧美在线你懂得| 色94色欧美sute亚洲线路一久 | 无码av免费一区二区三区试看| 亚洲综合偷拍欧美一区色| 亚洲另类一区二区| 秋霞电影网一区二区| 精品在线播放午夜| 成人精品高清在线| 色综合天天在线| 91精品欧美久久久久久动漫| 欧美草草影院在线视频| 欧美在线free| 在线不卡a资源高清| 欧美色区777第一页| 欧美三区免费完整视频在线观看| 91日韩在线专区| 欧美日韩免费观看一区二区三区| 色哟哟亚洲精品| 欧美精品一级二级| 欧美日韩国产天堂| 欧美亚洲一区三区| 欧美一区二区女人| 中文字幕中文字幕一区二区 | 国产激情一区二区三区四区 | 欧美最猛黑人xxxxx猛交| 日韩一级片网站| 亚洲人精品一区| 丁香亚洲综合激情啪啪综合| 国产999精品久久久久久绿帽| www.日韩精品| 欧美xxxx在线观看| 夜色激情一区二区| 国产一区二区看久久| 91欧美一区二区| 国产精品伦一区| 国产一区二三区好的| 色婷婷亚洲精品| 欧美国产精品v| 蜜臀久久久99精品久久久久久| 国产馆精品极品| 欧美日韩免费电影| 亚洲欧美怡红院| 国产成人一级电影| 久久一区二区视频| 久久se这里有精品| 在线不卡一区二区| 韩国三级在线一区| 国产日产精品一区| 日韩高清不卡一区二区| 亚洲福中文字幕伊人影院| 成人福利在线看| 中文av一区二区| av中文字幕一区| 国产suv精品一区二区6| 黄页网站大全一区二区| 一区二区久久久久久| 欧美v国产在线一区二区三区| 国产99久久久国产精品免费看| 国产精品福利电影一区二区三区四区| 成人一区在线观看| 激情成人午夜视频| 17c精品麻豆一区二区免费| 欧美日韩国产中文| 激情综合色播激情啊| 国产精品美女久久久久久久久久久| 在线观看国产日韩| 日韩黄色小视频| 欧美xfplay| 成人精品一区二区三区四区| 国产精品成人一区二区三区夜夜夜| 成人av中文字幕| 亚洲另类色综合网站| 国产精品久久久久影院色老大 | 欧美日本不卡视频| 久久久亚洲国产美女国产盗摄| 男男视频亚洲欧美| 日韩一区二区三区精品视频| 亚洲福利一区二区三区| 欧美影院一区二区三区| 一区二区免费在线| 欧美日本高清视频在线观看| 首页综合国产亚洲丝袜| 91精品婷婷国产综合久久竹菊| 丝袜亚洲另类欧美| 日韩欧美美女一区二区三区| 看电影不卡的网站| 国产偷国产偷精品高清尤物| 高清视频一区二区| 亚洲六月丁香色婷婷综合久久| 在线看不卡av| 轻轻草成人在线| 久久色视频免费观看| 成人自拍视频在线观看| 亚洲精品中文字幕乱码三区| 欧美三级乱人伦电影| 麻豆精品一区二区综合av| 国产午夜亚洲精品不卡| 91丨九色丨尤物| 亚洲成a人片综合在线| 欧美大尺度电影在线| 丁香桃色午夜亚洲一区二区三区 | 亚洲人成网站影音先锋播放| 欧美日韩亚洲高清一区二区| 麻豆国产欧美日韩综合精品二区| 久久免费的精品国产v∧| 日本电影亚洲天堂一区| 麻豆精品视频在线|