即時通訊開發平臺的部分C#代碼

using System;  
using System.Text;  
using System.Runtime.InteropServices;  
 
namespace Platform  
{  
    /******************************************************************************** 
    * ** AnyChat Platform Core SDK 
    * *********************************************************************************/ 
    public class AnyChatCoreSDK  
    { 
        #region AnyChat Platform Core SDK 常量定義  
        // 內核參數定義,API:BRAC_SetSDKOption、BRAC_GetSDKOption 傳入參數  
        public const int BRAC_SO_AUDIO_VADCTRL          =   1;  // 音頻靜音檢測控制(參數爲:int型:1打開,0關閉)  
        public const int BRAC_SO_AUDIO_NSCTRL           =   2;  // 音頻噪音抑制控制(參數爲:int型:1打開,0關閉)  
        public const int BRAC_SO_AUDIO_ECHOCTRL         =   3;  // 音頻迴音消除控制(參數爲:int型:1打開,0關閉)  
        public const int BRAC_SO_AUDIO_AGCCTRL          =   4;  // 音頻自動增益控制(參數爲:int型:1打開,0關閉)  
        public const int BRAC_SO_AUDIO_CPATUREMODE      =   5;  // 音頻採集模式設置(參數爲:int型:0 發言模式,1 放歌模式,2 卡拉OK模式,3 線路輸入模式)  
        public const int BRAC_SO_AUDIO_MICBOOST         =   6;  // 音頻採集Mic增強控制(參數爲:int型:0 取消,1 選中,2 設備不存在[查詢時返回值])  
        public const int BRAC_SO_RECORD_VIDEOBR         =   10; // 錄像視頻碼率設置(參數爲:int型,單位:bps)  
        public const int BRAC_SO_RECORD_AUDIOBR         =   11; // 錄像音頻碼率設置(參數爲:int型,單位:bps)  
        public const int BRAC_SO_RECORD_TMPDIR          =   12; // 錄像文件臨時目錄設置(參數爲字符串PCHAR類型,必須是完整的絕對路徑)  
        public const int BRAC_SO_SNAPSHOT_TMPDIR        =   13; // 快照文件臨時目錄設置(參數爲字符串PCHAR類型,必須是完整的絕對路徑)  
        public const int BRAC_SO_CORESDK_TMPDIR         =   14; // 設置AnyChat Core SDK臨時目錄(參數爲字符串PCHAR類型,必須是完整的絕對路徑)  
        public const int BRAC_SO_CORESDK_PATH           =   20; // 設置AnyChat Core SDK相關組件路徑(參數爲字符串PCHAR類型,必須是完整的絕對路徑)  
        public const int BRAC_SO_LOCALVIDEO_BITRATECTRL =   30; // 本地視頻編碼碼率設置(參數爲int型,單位bps,同服務器配置:VideoBitrate)  
        public const int BRAC_SO_LOCALVIDEO_QUALITYCTRL =   31; // 本地視頻編碼質量因子控制(參數爲int型,同服務器配置:VideoQuality)  
        public const int BRAC_SO_LOCALVIDEO_GOPCTRL     =   32; // 本地視頻編碼關鍵幀間隔控制(參數爲int型,同服務器配置:VideoGOPSize)  
        public const int BRAC_SO_LOCALVIDEO_FPSCTRL     =   33; // 本地視頻編碼幀率控制(參數爲int型,同服務器配置:VideoFps)  
        public const int BRAC_SO_LOCALVIDEO_PRESETCTRL  =   34; // 本地視頻編碼預設參數控制(參數爲int型,1-5)  
        public const int BRAC_SO_LOCALVIDEO_APPLYPARAM  =   35; // 應用本地視頻編碼參數,使得前述修改即時生效(參數爲int型:1 使用新參數,0 使用默認參數)  
        public const int BRAC_SO_LOCALVIDEO_VIDEOSIZEPOLITIC=36;// 本地視頻採集分辯率控制策略(參數爲int型,0 自動向下逐級匹配[默認];1 使用採集設備默認分辯率),當配置的分辯率不被採集設備支持時有效  
        public const int BRAC_SO_LOCALVIDEO_DEINTERLACE =   37; // 本地視頻反交織參數控制(參數爲int型: 0 不進行反交織處理[默認];1 反交織處理),當輸入視頻源是隔行掃描源(如電視信號)時通過反交織處理可以提高畫面質量  
        public const int BRAC_SO_NETWORK_P2PPOLITIC     =   40; // 本地網絡P2P策略控制(參數爲:int型:0 禁止本地P2P,1 服務器控制P2P[默認],2 上層應用控制P2P連接,3 按需建立P2P連接)  
        public const int BRAC_SO_NETWORK_P2PCONNECT     =   41; // 嘗試與指定用戶建立P2P連接(參數爲int型,表示目標用戶ID),連接建立成功後,會通過消息反饋給上層應用,P2P控制策略=2時有效  
        public const int BRAC_SO_NETWORK_P2PBREAK       =   42; // 斷開與指定用戶的P2P連接(參數爲int型,表示目標用戶ID)[暫不支持,保留]  
 
        // 用戶狀態標誌定義,API:BRAC_QueryUserState 傳入參數  
        public const int BRAC_USERSTATE_CAMERA          =   1;  // 用戶攝像頭狀態(參數爲DWORD型)  
        public const int BRAC_USERSTATE_HOLDMIC         =   2;  // 用戶持有Mic狀態(參數爲DWORD型)  
        public const int BRAC_USERSTATE_SPEAKVOLUME     =   3;  // 用戶當前說話音量(參數爲DOUBLE類型(0.0 ~ 100.0))  
        public const int BRAC_USERSTATE_RECORDING       =   4;  // 用戶錄像(音)狀態(參數爲DWORD型)  
        public const int BRAC_USERSTATE_LEVEL           =   5;  // 用戶級別(參數爲DWORD型)  
        public const int BRAC_USERSTATE_NICKNAME        =   6;  // 用戶暱稱(參數爲字符串PCHAR類型)  
        public const int BRAC_USERSTATE_LOCALIP         =   7;  // 用戶本地IP地址(內網,參數爲字符串PCHAR類型)  
        public const int BRAC_USERSTATE_INTERNETIP      =   8;  // 用戶互聯網IP地址(參數爲字符串PCHAR類型)  
        public const int BRAC_USERSTATE_VIDEOBITRATE    =   9;  // 用戶當前的視頻碼率(參數爲DWORD類型,Bps)  
        public const int BRAC_USERSTATE_AUDIOBITRATE    =   10; // 用戶當前的音頻碼率(參數爲DWORD類型,Bps)  
        public const int BRAC_USERSTATE_P2PCONNECT      =   11; // 查詢本地用戶與指定用戶的當前P2P連接狀態(參數爲DWORD類型,返回值:0 P2P不通, 1 P2P連接成功[TCP],2 P2P連接成功[UDP],3 P2P連接成功[TCP、UDP])  
        public const int BRAC_USERSTATE_NETWORKSTATUS   =   12; // 查詢指定用戶的網絡狀態(參數爲DWORD類型,返回值:0 優良,1 較好,2 一般,3 較差,4 非常差),注:查詢間隔需要>1s  
 
        // SDK消息定義  
        public const int WM_GV = 0x0400 + 200;  
        public const int WM_GV_CONNECT          =   WM_GV + 1;  // 客戶端連接服務器,wParam(BOOL)表示是否連接成功  
        public const int WM_GV_LOGINSYSTEM      =   WM_GV + 2;  // 客戶端登錄系統,wParam(INT)表示自己的用戶ID號,lParam(INT)表示登錄結果:0 成功,否則爲出錯代碼,參考出錯代碼定義  
        public const int WM_GV_ENTERROOM        =   WM_GV + 3;  // 客戶端進入房間,wParam(INT)表示所進入房間的ID號,lParam(INT)表示是否進入房間:0成功進入,否則爲出錯代碼  
        public const int WM_GV_MICSTATECHANGE   =   WM_GV + 4;  // 用戶的Mic狀態變化消息,wParam(INT)表示用戶ID號,lParam(BOOL)表示該用戶是否持有Mic  
        public const int WM_GV_USERATROOM       =   WM_GV + 5;  // 用戶進入(離開)房間,wParam(INT)表示用戶ID號,lParam(BOOL)表示該用戶是進入(TRUE)或離開(FALSE)房間  
        public const int WM_GV_LINKCLOSE        =   WM_GV + 6;  // 網絡連接已關閉,該消息只有在客戶端連接服務器成功之後,網絡異常中斷之時觸發,wParam(INT)表示連接斷開的原因  
        public const int WM_GV_ONLINEUSER       =   WM_GV + 7;  // 收到當前房間的在線用戶信息,進入房間後觸發一次,wParam(INT)表示在線用戶數(包含自己),lParam(INT)表示房間ID  
        public const int WM_GV_FORTUNEMENU      =   WM_GV + 8;  // 用戶選擇了一項財富菜單項,wParam(INT)表示用戶ID號,lParam(INT)表示財富菜單標記,指示是選擇了哪一項菜單  
        public const int WM_GV_ROOMWAITQUEUE    =   WM_GV + 9;  // 用戶收到當前房間等待隊列消息,wParam(INT)表示用戶前面的隊列長度,lParam(INT)表示當前房間總的等待隊列長度  
        public const int WM_GV_ENTERREQUEST     =   WM_GV + 10; // 用戶申請進入房間消息,wParam(INT)表示用戶ID號,lParam(BOOL)表示該用戶是申請進入(TRUE)房間或離開(FALSE)房間等待隊列  
        public const int WM_GV_CAMERASTATE      =   WM_GV + 11; // 用戶攝像頭狀態發生變化,wParam(INT)表示用戶ID號,lParam(INT)表示攝像頭的當前狀態,定義爲:GV_CAMERA_STATE_XXXX  
        public const int WM_GV_CHATMODECHG      =   WM_GV + 12; // 用戶聊天模式發生變化,wParam(INT)表示用戶ID號,lParam(INT)表示用戶的當前聊天模式  
        public const int WM_GV_ACTIVESTATE      =   WM_GV + 13; // 用戶活動狀態發生變化,wParam(INT)表示用戶ID號,lParam(INT)表示用戶的當前活動狀態  
        public const int WM_GV_P2PCONNECTSTATE  =   WM_GV + 14; // 本地用戶與其它用戶的P2P網絡連接狀態發生變化,wParam(INT)表示其它用戶ID號,lParam(INT)表示本地用戶與其它用戶的當前P2P網絡連接狀態  
        public const int WM_GV_PRIVATEREQUEST   =   WM_GV + 21; // 用戶發起私聊請求,wParam(INT)表示發起者的用戶ID號,lParam(INT)表示私聊請求編號,標識該請求  
        public const int WM_GV_PRIVATEECHO      =   WM_GV + 22; // 用戶回覆私聊請求,wParam(INT)表示回覆者的用戶ID號,lParam(INT)爲出錯代碼  
        public const int WM_GV_PRIVATEEXIT      =   WM_GV + 23; // 用戶退出私聊,wParam(INT)表示退出者的用戶ID號,lParam(INT)爲出錯代碼  
        public const int WM_GV_EXTENDBTNPRESS   =   WM_GV + 31; // 用戶按下擴展按鈕,wParam(INT)表示按鈕所對應的用戶ID號,lParam(DWORD)指示按鈕(左下角)所在屏幕位置(x,y),用戶可以利用該參數顯示菜單等  
        public const int WM_GV_SDKWARNING       =   WM_GV + 41; // SDK警告信息,當SDK在運行過程中自檢發現異常狀態時,將向上層發送該消息,wParam(INT)表示警告代碼,定義爲:GV_ERR_WARNING_XXXX  
 
        // SDK出錯代碼定義,其它代碼請參考:C++ SDK目錄中的GVErrorCodeDefine.h文件  
        public const int GV_ERR_SUCCESS         =   0;          // 成功  
 
 
        public const ulong BRAC_FUNC_VIDEO_CBDATA   =   0x00000001L ;///< 通過回調函數輸出視頻數據  
        public const ulong BRAC_FUNC_VIDEO_AUTODISP =0x00000002L    ;///< 由SDK包處理視頻,將視頻顯示在指定的窗口上  
        public const ulong BRAC_FUNC_AUDIO_CBDATA   =   0x00000004L;    ///< 通過回調函數輸出音頻數據  
        public const ulong BRAC_FUNC_AUDIO_AUTOPLAY =0x00000008L    ;///< 由SDK包處理音頻,直接播放  
        public const ulong BRAC_FUNC_CONFIG_LOCALINI    =0x00000010L    ;///< 生成本地配置文件(AnyChatSDK.ini)  
        public const ulong BRAC_FUNC_FIREWALL_OPEN  =   0x00000020L;    ///< 允許SDK操作Windows防火牆,將當前應用程序加入防火牆訪問列表(避免Windows提示用戶是否阻止當前應用程序)  
        public const ulong BRAC_FUNC_CHKDEPENDMODULE    =0x00000040L    ;///< 自動檢查SDK所依賴的組件,並自動註冊  
        public const ulong BRAC_FUNC_AUDIO_VOLUMECALC=  0x00000080L;    ///< 由SDK自動計算語音的音量  
        public const ulong BRAC_FUNC_AUDIO_AUTOVOLUME=  0x00000100L;    ///< 允許SDK自動控制Mic錄音音量  
        public const ulong BRAC_FUNC_NET_SUPPORTUPNP    =0x00000200L    ;///< 允許SDK打開用戶網絡中的UPNP設備,如果用戶的路由器或是防火牆支持UPNP協議,則可提高P2P打洞的成功率  
        public const ulong BRAC_FUNC_DISABLEDECODE = 0x00000400L;///< 禁止對收到的數據進行解碼和播放,爲了提高代理客戶端的數據轉發性能,可設置該標誌,否則不能設置該標誌  
 
 
 
      
 
 
 
 
 
 
 
 
 
 
        // 音頻設備枚舉定義  
        public enum AudioDevice  
        {  
            BRAC_AD_WAVEIN  = 0,                                // 輸入設備:Mic  
            BRAC_AD_WAVEOUT = 1                                 // 輸出設備:Wave  
        }  
 
        public enum PixelFormat{  
            BRAC_PIX_FMT_RGB24 = 0,                     ///< Packed RGB 8:8:8, 24bpp, RGBRGB...(MEDIASUBTYPE_RGB24)  
            BRAC_PIX_FMT_RGB32,                         ///< 對應於:MEDIASUBTYPE_RGB32,Packed RGB 8:8:8, 32bpp, (msb)8A 8R 8G 8B(lsb), in cpu endianness  
            BRAC_PIX_FMT_YV12,                          ///< 對應於:MEDIASUBTYPE_YV12,Planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)  
            BRAC_PIX_FMT_YUY2,                          ///< 對應於:MEDIASUBTYPE_YUY2,Packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr  
        }  
        [StructLayout(LayoutKind.Sequential)]            
        //BitmapInfoHeader   定義了位圖的頭部信息            
        public struct BITMAPINFOHEADER            
        {                
            [MarshalAs(UnmanagedType.I4)]                
            public Int32 biSize;                
            [MarshalAs(UnmanagedType.I4)]                
            public Int32 biWidth;                
            [MarshalAs(UnmanagedType.I4)]                
            public Int32 biHeight;                
            [MarshalAs(UnmanagedType.I2)]                
            public short biPlanes;                
            [MarshalAs(UnmanagedType.I2)]                
            public short biBitCount;                
            [MarshalAs(UnmanagedType.I4)]                
            public Int32 biCompression;                
            [MarshalAs(UnmanagedType.I4)]                
            public Int32 biSizeImage;                
            [MarshalAs(UnmanagedType.I4)]                
            public Int32 biXPelsPerMeter;                
            [MarshalAs(UnmanagedType.I4)]                
            public Int32 biYPelsPerMeter;                
            [MarshalAs(UnmanagedType.I4)]                
            public Int32 biClrUsed;                
            [MarshalAs(UnmanagedType.I4)]                
            public Int32 biClrImportant;            
        }  
 
        // 功能模式枚舉定義,API:BRAC_InitSDK 傳入參數  
        public enum FUNCMode : ulong 
        {  
            BRAC_FUNC_VIDEO_CBDATA          =   0x00000001L,    // 通過回調函數輸出視頻數據  
            BRAC_FUNC_VIDEO_AUTODISP        =   0x00000002L,    // 由SDK包處理視頻,將視頻顯示在指定的窗口上  
            BRAC_FUNC_AUDIO_CBDATA          =   0x00000004L,    // 通過回調函數輸出音頻數據  
            BRAC_FUNC_AUDIO_AUTOPLAY        =   0x00000008L,    // 由SDK包處理音頻,直接播放  
            BRAC_FUNC_CONFIG_LOCALINI       =   0x00000010L,    // 生成本地配置文件(AnyChatSDK.ini)  
            BRAC_FUNC_FIREWALL_OPEN         =   0x00000020L,    // 允許SDK操作Windows防火牆,將當前應用程序加入防火牆訪問列表(避免Windows提示用戶是否阻止當前應用程序)  
            BRAC_FUNC_CHKDEPENDMODULE       =   0x00000040L,    // 自動檢查SDK所依賴的組件,並自動註冊  
            BRAC_FUNC_AUDIO_VOLUMECALC      =   0x00000080L,    // 由SDK自動計算語音的音量  
            BRAC_FUNC_AUDIO_AUTOVOLUME      =   0x00000100L,    // 允許SDK自動控制Mic錄音音量  
            BRAC_FUNC_NET_SUPPORTUPNP       =   0x00000200L,    // 允許SDK打開用戶網絡中的UPNP設備,如果用戶的路由器或是防火牆支持UPNP協議,則可提高P2P打洞的成功率  
            BRAC_FUNC_DISABLEDECODE         =   0x00000400L     // 禁止對收到的數據進行解碼和播放,爲了提高代理客戶端的數據轉發性能,可設置該標誌,否則不能設置該標誌  
        }  
 
 
 
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]  
        public struct WaveFormat  
        {  
            public short wFormatTag;  
            public short nChannels;  
            public uint nSamplesPerSec;  
            public uint nAvgBytesPerSec;  
            public short nBlockAlign;  
            public short wBitsPerSample;  
            public short cbSize;  
        }  
        #endregion 
 
        #region AnyChat Platform Core SDK 功能函數API接口封裝  
        /// <summary>  
        /// 透明通道數據回調函數定義  
        /// </summary>  
        /// <param name="userId">用戶ID</param>  
        /// <param name="buf">緩衝區</param>  
        /// <param name="len">緩衝區長度</param>  
        /// <param name="userValue">附帶信息</param>  
        public delegate void TransBufferCallBack(int userId, IntPtr buf, int len, int userValue);  
 
        /// <summary>  
        /// 透明通道擴展回調函數定義  
        /// </summary>  
        /// <param name="userId">用戶ID</param>  
        /// <param name="buf">緩衝區</param>  
        /// <param name="len">緩衝區長度</param>  
        /// <param name="wParam">緩衝區附帶信息1</param>  
        /// <param name="lParam">緩衝區附帶信息2</param>  
        /// <param name="taskId">傳輸任務編號</param>  
        /// <param name="userValue">自定義參數</param>  
        public delegate void TransBufferCallBackEx(int userId, IntPtr buf, int len,int wParam,int lParam,int taskId, int userValue);  
 
        /// <summary>  
        /// 傳輸文件回調函數定義  
        /// </summary>  
        /// <param name="userId">用戶ID</param>  
        /// <param name="fileName">文件名</param>  
        /// <param name="filePath">文件接收後保存在本地的路徑</param>  
        /// <param name="fileLength">文件長度</param>  
        /// <param name="wParam">附帶信息1</param>  
        /// <param name="lParam">附帶信息2</param>  
        /// <param name="taskId">傳輸任務編號</param>  
        /// <param name="userValue">自定義參數</param>  
        public delegate void TransFileCallBack(int userId, string fileName, string filePath, int fileLength, int wParam, int lParam, int taskId, int userValue);  
 
        /// <summary>  
        /// 音量變化回調函數定義  
        /// </summary>  
        /// <param name="device">音頻設備</param>  
        /// <param name="currentVolume">當前音量</param>  
        /// <param name="lpUserValue">附帶信息</param>  
        public delegate void VolumeChangeCallBack(AudioDevice device, int currentVolume, int userValue);  
 
        public delegate void SDKFilterDataCallBack(IntPtr buf,int len,int userValue);  
 
        /// <summary>  
        /// 錄像回調函數  
        /// </summary>  
        /// <param name="userId">用戶id</param>  
        /// <param name="filePath">錄像保存路徑</param>  
        /// <param name="param">參數</param>  
        /// <param name="recordType">錄像類型,1錄像,0拍照</param>  
        /// <param name="userValue">用戶參數</param>  
        public delegate void RecordCallBack(int userId, string filePath, int param, bool recordType,int userValue);  
 
        /// <summary>  
        /// 視頻回調函數  
        /// </summary>  
        /// <param name="userId"></param>  
        /// <param name="buf"></param>  
        /// <param name="len"></param>  
        /// <param name="bitMap"></param>  
        /// <param name="userValue"></param>  
        public delegate void VideoData_CallBack(int userId, IntPtr buf, int len, BITMAPINFOHEADER bitMap, int userValue);  
 
        /// <summary>  
        /// 聲音回調  
        /// </summary>  
        /// <param name="userId"></param>  
        /// <param name="buf"></param>  
        /// <param name="len"></param>  
        /// <param name="format"></param>  
        /// <param name="userValue"></param>  
        public delegate void AudioData_CallBack(int userId,IntPtr buf,int len,WaveFormat format,int userValue);  
 
        /// <summary>  
        /// 消息接收回調  
        /// </summary>  
        /// <param name="fromuserId"></param>  
        /// <param name="touserId"></param>  
        /// <param name="isserect"></param>  
        /// <param name="message"></param>  
        /// <param name="len"></param>  
        /// <param name="userValue"></param>  
        public delegate void TextMessage_CallBack(int fromuserId, int touserId, bool isserect,   
            string message, int len, int userValue);  
 
        /// <summary>  
        /// 視頻事件註冊  
        /// </summary>  
        /// <param name="format"></param>  
        /// <param name="function"></param>  
        /// <param name="userValue"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SetVideoDataCallBack")]  
        public static extern int SetVideoDataCallBack(PixelFormat format, VideoData_CallBack function,int userValue);  
 
 
          
 
        /// <summary>  
        /// SDK Filter 註冊回調  
        /// </summary>  
        /// <param name="format"></param>  
        /// <param name="function"></param>  
        /// <param name="userValue"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SetSDKFilterDataCallBack")]  
        public static extern int SetSDKFilterDataCallBack(SDKFilterDataCallBack function, int userValue);  
 
        /// <summary>  
        /// SDK Filter 發送數據到服務器端  
        /// </summary>  
        /// <param name="format"></param>  
        /// <param name="function"></param>  
        /// <param name="userValue"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SendSDKFilterData")]  
        public static extern int SendSDKFilterData(IntPtr buf, int len);  
 
          
        /// <summary>  
        /// 聲音事件註冊  
        /// </summary>  
        /// <param name="format"></param>  
        /// <param name="function"></param>  
        /// <param name="userValue"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SetAudioDataCallBack")]  
        public static extern int SetAudioDataCallBack(AudioData_CallBack function, int userValue);  
 
 
        /// <summary>  
        /// 註冊文字消息回調  
        /// </summary>  
        /// <param name="format"></param>  
        /// <param name="function"></param>  
        /// <param name="userValue"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SetTextMessageCallBack")]  
        public static extern int SetTextMessageCallBack(TextMessage_CallBack function, int userValue);  
 
 
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SetServerAuthPass")]  
        public static extern int SetServerAuthPass(StringBuilder key);  
 
        /// <summary>  
        /// 發送消息  
        /// </summary>  
        /// <param name="userID">-1爲所有人</param>  
        /// <param name="isSerect">僅用戶id 不爲-1時有效</param>  
        /// <param name="msg">消息內容</param>  
        /// <param name="len"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SendTextMessage")]  
        public static extern int SendTextMessage(int userID,bool isSerect,string msg,int len);  
          
        /// <summary>  
        /// 與服務器端交換  
        /// </summary>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SendTextMessage")]  
        public static extern int SendSDKFilterData();  
        /// <summary>  
        /// 獲取用戶名  
        /// </summary>  
        /// <param name="userId">用戶ID</param>  
        /// <param name="userName">用戶名</param>  
        /// <param name="bufLen">緩衝區長度</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_GetUserName")]  
        public static extern int GetUserName(int userId, StringBuilder userName, int bufLen);  
 
        /// <summary>  
        /// 初始化系統  
        /// </summary>  
        /// <param name="hWnd">接收消息窗口句柄,可爲空</param>  
        /// <param name="funcMode">功能模式</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_InitSDK")]  
        public static extern int InitSDK(IntPtr hWnd, ulong funcMode);  
 
        /// <summary>  
        /// 設置透明通道數據回調函數  
        /// </summary>  
        /// <param name="function">回調函數</param>  
        /// <param name="userValue">附帶信息</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SetTransBufferCallBack")]  
        public static extern int SetTransBufferCallBack(TransBufferCallBack function, int userValue);  
 
        /// <summary>  
        /// 設置透明通道擴展回調函數  
        /// </summary>  
        /// <param name="function">回調函數</param>  
        /// <param name="userValue">附帶信息</param>  
        /// <returns>0爲成功,否則失敗</param>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SetTransBufferExCallBack")]  
        public static extern int SetTransBufferExCallBack(TransBufferCallBackEx function, int userValue);  
 
        /// <summary>  
        /// 設置文件傳輸回調函數  
        /// </summary>  
        /// <param name="function">回調函數</param>  
        /// <param name="userValue">附帶信息</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SetTransFileCallBack")]  
        public static extern int SetTransFileCallBack(TransFileCallBack function, int userValue);  
 
        /// <summary>  
        /// 設置音量變化回調函數  
        /// </summary>  
        /// <param name="function">回調函數</param>  
        /// <param name="userValue">附帶信息</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SetVolumeChangeCallBack")]  
        public static extern int SetVolumeChangeCallBack(VolumeChangeCallBack function, int userValue);  
 
        /// <summary>  
        /// 設置錄像回調函數  
        /// </summary>  
        /// <param name="function"></param>  
        /// <param name="userValue"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SetRecordSnapShotCallBack")]  
        public static extern int SetRecordCallBack(RecordCallBack function, int userValue);  
 
        /// <summary>  
        /// 連接服務器  
        /// </summary>  
        /// <param name="serverAddr">服務器地址</param>  
        /// <param name="port">端口號</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_Connect")]  
        public static extern int Connect(string serverAddr, int port);  
 
        /// <summary>  
        /// 登錄系統  
        /// </summary>  
        /// <param name="userName">用戶名</param>  
        /// <param name="password">密碼</param>  
        /// <param name="passEncType">是否加密</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_Login")]  
        public static extern int Login(string userName, string password, int passEncType);  
 
        /// <summary>  
        /// 進入房間  
        /// </summary>  
        /// <param name="roomid">房間號</param>  
        /// <param name="roomPass">房間密碼</param>  
        /// <param name="passEncType">是否加密</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_EnterRoom")]  
        public static extern int EnterRoom(int roomid, string roomPass, int passEncType);  
 
        /// <summary>  
        /// 離開房間  
        /// </summary>  
        /// <param name="roomid">房間號</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_LeaveRoom")]  
        public static extern int LeaveRoom(int roomid);  
 
        /// <summary>  
        /// 註銷系統  
        /// </summary>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_Logout")]  
        public static extern int Logout();  
 
        /// <summary>  
        /// 釋放所有資源  
        /// </summary>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_Release")]  
        public static extern int Release();  
 
        /// <summary>  
        /// 獲取當前房間在線用戶列表  
        /// </summary>  
        /// <param name="userIDArray">用戶列表</param>  
        /// <param name="userNum">用戶數量</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_GetOnlineUser")]  
        public static extern int GetOnlineUser(int[] userIDArray, ref int userNum);  
 
        /// <summary>  
        /// 查詢用戶攝像頭的狀態  
        /// </summary>  
        /// <param name="userid">用戶ID</param>  
        /// <param name="state">當前狀態,0爲沒有攝像頭,1爲有但沒打開,2爲已打開</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_GetCameraState")]  
        public static extern int GetCameraState(int userid, ref int state);  
 
        /// <summary>  
        /// 查詢用戶發言狀態  
        /// </summary>  
        /// <param name="userid">用戶ID</param>  
        /// <param name="state">0爲沒說話,1爲正在說話</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_GetSpeakState")]  
        public static extern int GetSpeakState(int userid, ref int state);  
 
        /// <summary>  
        /// 查詢指定用戶相關狀態(非字符串類型)  
        /// </summary>  
        /// <param name="userid">用戶編號</param>  
        /// <param name="infoname">參數名,參考常量定義:BRAC_USERSTATE_XXXX</param>  
        /// <param name="infoval">參數地址</param>  
        /// <param name="infolen">參數長度</param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_QueryUserState")]  
        public static extern int QueryUserState(int userid, int infoname, ref int infoval, int infolen);  
        // BRAC_API DWORD BRAC_QueryUserState(DWORD dwUserId, int infoname, char FAR* infoval, int infolen);  
 
        /// <summary>  
        /// 查詢指定用戶相關狀態(字符串類型)  
        /// </summary>  
        /// <param name="userid">用戶編號</param>  
        /// <param name="infoname">參數名,參考常量定義:BRAC_USERSTATE_XXXX</param>  
        /// <param name="infoval">參數地址</param>  
        /// <param name="infolen">參數長度</param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_QueryUserState")]  
        public static extern int QueryUserState(int userid, int infoname, StringBuilder infoval, int infolen);  
        // BRAC_API DWORD BRAC_QueryUserState(DWORD dwUserId, int infoname, char FAR* infoval, int infolen);  
 
        /// <summary>  
        /// 顯示本地視頻畫面調節對話框  
        /// </summary>  
        /// <param name="parent">父窗體句柄</param>  
        /// <param name="caption">窗體標題</param>  
        /// <param name="dwX">X位置</param>  
        /// <param name="dwY">Y位置</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_ShowLVProperty")]  
        public static extern int ShowLVProperty(IntPtr parent, string caption, int dwX, int dwY);  
 
        /// <summary>  
        /// 操作用戶視頻  
        /// </summary>  
        /// <param name="userid">用戶ID</param>  
        /// <param name="open">是否打開</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_UserCameraControl")]  
        public static extern int UserCameraControl(int userid, bool open);  
 
        /// <summary>  
        /// 操作用戶語音  
        /// </summary>  
        /// <param name="userid">用戶ID</param>  
        /// <param name="open">是否打開</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_UserSpeakControl")]  
        public static extern int UserSpeakControl(int userid, bool open);  
 
        /// <summary>  
        /// 設置視頻顯示位置  
        /// </summary>  
        /// <param name="userid">用戶ID</param>  
        /// <param name="hWnd">窗口句柄</param>  
        /// <param name="left">左位置</param>  
        /// <param name="top">上位置</param>  
        /// <param name="right">右位置</param>  
        /// <param name="bottom">底位置</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SetVideoPos")]  
        public static extern int SetVideoPos(int userid, IntPtr hWnd, int left, int top, int right, int bottom);  
 
        /// <summary>  
        /// 獲取指定音頻設備的當前音量  
        /// </summary>  
        /// <param name="device">音頻設備</param>  
        /// <param name="volume">音量</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_AudioGetVolume")]  
        public static extern int AudioGetVolume(AudioDevice device, ref int volume);  
 
        /// <summary>  
        /// 設置指定音頻設備的音量  
        /// </summary>  
        /// <param name="device">音頻設備</param>  
        /// <param name="volume">音量</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_AudioSetVolume")]  
        public static extern int AudioSetVolume(AudioDevice device, int volume);  
 
        /// <summary>  
        /// 利用透明通道傳送數據  
        /// </summary>  
        /// <param name="userid">用戶ID</param>  
        /// <param name="buf">緩衝區</param>  
        /// <param name="len">緩衝區長度</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_TransBuffer")]  
        public static extern int TransBuffer(int  userid, IntPtr buf, int len);  
 
        /// <summary>  
        /// 利用擴展透明通道傳送數據  
        /// </summary>  
        /// <param name="userid">用戶ID</param>  
        /// <param name="buf">緩衝區</param>  
        /// <param name="len">緩衝區長度</param>  
        /// <param name="wParam">附帶信息1</param>  
        /// <param name="lParam">附帶信息2</param>  
        /// <param name="flag">特殊標誌,默認爲0</param>  
        /// <param name="taskId">任務ID,添加任務後系統自動生成</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_TransBufferEx")]  
        public static extern int TransBufferEx(int userid, IntPtr buf, int len, int wParam, int lParam, int flag, ref int taskId);  
 
        /// <summary>  
        /// 傳送文件  
        /// </summary>  
        /// <param name="userid">用戶ID</param>  
        /// <param name="localFilePath">本地文件路徑</param>  
        /// <param name="wParam">附帶信息1</param>  
        /// <param name="lParam">附帶信息2</param>  
        /// <param name="flag">特殊標誌</param>  
        /// <param name="taskId">任務ID</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_TransFile")]  
        public static extern int TransFile(int userid, string localFilePath, int wParam, int lParam, int flag, ref int taskId);  
 
        /// <summary>  
        /// 開啓或關閉錄像  
        /// </summary>  
        /// <param name="userId">用戶id</param>  
        /// <param name="startRecord">是否開啓錄像</param>  
        /// <param name="flags">標誌,0爲錄製視頻音頻</param>  
        /// <param name="param">參數</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_StreamRecordCtrl")]  
        public static extern int StreamRecordCtrl(int userId, bool startRecord, ulong flags, int param);  
 
        /// <summary>  
        /// 抓取視頻,對指定用戶進行拍照  
        /// </summary>  
        /// <param name="userId"></param>  
        /// <param name="flags"></param>  
        /// <param name="param"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SnapShot")]  
        public static extern int SnapShot(int userId, ulong flags, int param);  
 
        /// <summary>  
        /// 是否打開SDK日記  
        /// </summary>  
        /// <param name="isOpen">是否打開</param>  
        /// <returns>0爲成功,否則失敗</returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_ActiveCallLog")]  
        public static extern int ActiveCallLog(bool isOpen);  
 
        /// <summary>  
        /// 設置SDK內核參數(字符串類型)  
        /// </summary>  
        /// <param name="optName">參數名</param>  
        /// <param name="optval">參數值</param>  
        /// <param name="optlen">參數長度</param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SetSDKOption")]  
        public static extern int SetSDKOption(int optName, string optval, int optlen);  
 
        /// <summary>  
        /// 設置SDK內核參數(非字符串類型,INT、BOOL類型)  
        /// </summary>  
        /// <param name="optName">參數名,參考常量定義:BRAC_SO_XXXX</param>  
        /// <param name="optval">參數地址</param>  
        /// <param name="optlen">參數長度</param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SetSDKOption")]  
        public static extern int SetSDKOption(int optName, ref int optval, int optlen);  
 
        /// <summary>  
        /// 獲取SDK內核參數  
        /// </summary>  
        /// <param name="optName">參數名,參考常量定義:BRAC_SO_XXXX</param>  
        /// <param name="optval">保存參數值的緩衝區地址</param>  
        /// <param name="optlen">參數緩衝區大小</param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_GetSDKOption")]  
        public static extern int GetSDKOption(int optName, ref int optval, int optlen);  
 
        /// <summary>  
        /// 枚舉視頻設備  
        /// </summary>  
        /// <param name="deviceName"></param>  
        /// <param name="deviceNum"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_EnumVideoCapture")]  
        public static extern int EnumVideoCapture(IntPtr[] deviceName, ref int deviceNum);  
 
        /// <summary>  
        /// 指定特定視頻設備  
        /// </summary>  
        /// <param name="deviceName"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SelectVideoCapture")]  
        public static extern int SelectVideoCapture(string deviceName);  
 
        /// <summary>  
        /// 獲取當前視頻設備  
        /// </summary>  
        /// <param name="deviceName"></param>  
        /// <param name="length"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_GetCurVideoCapture")]  
        public static extern int GetCurVideoCapture(StringBuilder deviceName, int length);  
 
        /// <summary>  
        /// 枚舉音頻設備  
        /// </summary>  
        /// <param name="deviceName"></param>  
        /// <param name="deviceNum"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_EnumAudioCapture")]  
        public static extern int EnumAudioCapture(IntPtr[] deviceName, ref int deviceNum);  
 
        /// <summary>  
        /// 指定特定音頻設備  
        /// </summary>  
        /// <param name="deviceName"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_SelectAudioCapture")]  
        public static extern int SelectAudioCapture(string deviceName);  
 
        /// <summary>  
        /// 獲取當前音頻設備  
        /// </summary>  
        /// <param name="deviceName"></param>  
        /// <param name="length"></param>  
        /// <returns></returns>  
        [DllImport("BRAnyChatCore.dll", EntryPoint = "BRAC_GetCurAudioCapture")]  
        public static extern int GetCurAudioCapture(StringBuilder deviceName, int length); 
 
        #endregion  
    }  

詳細代碼請查看附件

附件:http://download.csdn.net/detail/bairui_allen/4811682

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章