在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → 子佩来电盒二次开发API

子佩来电盒二次开发API

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:2.69M
  • 下载次数:24
  • 浏览次数:195
  • 发布时间:2022-05-16
  • 实例类别:C#语言基础
  • 发 布 人:子佩科技
  • 文件格式:.rar
  • 所需积分:0

实例介绍

【实例简介】子佩来电盒二次开发API

子佩电话来电盒子为您的二次开发需求提供最大选择余地,所有产品共用同一软件开发包。您使用任意一款USB语音盒开发系统后,如需更新或添加新功能,只要直接购买子佩另一种型号的USB语音盒,双方之间就可进行功能的平滑过度和升级,为后续开发和产品拓展提供更大空间

【实例截图】

from clipboard


/

#include "stdafx.h"
#include "TmBridgeInt.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

enum {
    BRIDGECONTROLAPI_ATTACH_SUCCESS=0,//���ӳɹ�                              
    BRIDGECONTROLAPI_ATTACH_FAILED=1,//����ʧ��              
    BRIDGECONTROLAPI_ATTACH_EXIT=2, //�������˳�                                                                        
    BRIDGECONTROLAPI_ATTACH_API_AVAILABLE=0x8001
};

//״̬��չ��...
#define BRIDGE_CALLIN       "CALLIN"//���� �磺CALLIN 2011 ��ʾ2011��������

/////////////////////////////////////////////////////////////////////////////
// CTmBridgeInt

CTmBridgeInt::CTmBridgeInt()
{
    m_bInit= FALSE;
    m_bIsInstall = TRUE;

}

CTmBridgeInt::~CTmBridgeInt()
{
}

BEGIN_MESSAGE_MAP(CTmBridgeInt, CWnd)
    //{{AFX_MSG_MAP(CTmBridgeInt)
    ON_WM_TIMER()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

#define BRIDGE_REG_ROOT         HKEY_CURRENT_USER
#define BRIDGE_REG_VALUEPATH    "Software\\Quanova\\Bridge"
/////////////////////////////////////////////////////////////////////////////
// CTmBridgeInt message handlers

BOOL CTmBridgeInt::IsInstalled()
{
    m_bIsInstall = TRUE;
    return TRUE;
    /*
    HKEY hk;
    char path[MAX_PATH];
    memset(path,0,MAX_PATH);
    strcpy(path,BRIDGE_REG_VALUEPATH);
    if (RegOpenKey(BRIDGE_REG_ROOT, path, &hk) != ERROR_SUCCESS )
    {
        m_bIsInstall = FALSE;
        return FALSE;
    }
    else
    {
        m_bIsInstall = TRUE;
        RegCloseKey(hk);
        return TRUE;
    }
    */
    return TRUE;
}

BOOL CTmBridgeInt::InitWindow()
{
    if(!IsInstalled())
    {
        return FALSE;
    }
    if(!m_bInit)
    {
        CString szClassName = AfxRegisterWndClass(CS_CLASSDC|CS_SAVEBITS,
                                                          LoadCursor(NULL, IDC_ARROW));
        BOOL Ret=Create(szClassName,_T(""),0,CRect(0,0,1,1),AfxGetMainWnd(),12999,NULL);

        InitVariable();
    }
    return TRUE;
}

BOOL CTmBridgeInt::Init(HWND hParent)
{
    if(!m_bIsInstall)
        return FALSE;
    m_hParentWnd = hParent;
    InitWindow();
    BOOL bRet=FALSE;
    hInit_MainWindowHandle = this->GetSafeHwnd();
    uiGlobal_MsgID_BridgeControlAPIAttach=RegisterWindowMessage("BridgeControlAPIAttach");
    uiGlobal_MsgID_BridgeControlAPIDiscover=RegisterWindowMessage("BridgeControlAPIDiscover");
    if( ::PostMessage( HWND_BROADCAST, uiGlobal_MsgID_BridgeControlAPIDiscover, (WPARAM)hInit_MainWindowHandle, 0)!=0 )
    {
        bRet = TRUE;
    }
    if(!m_ReConnectTimer)
    {//�������ʧ�ܣ��Զ�ÿ��30����������
        m_ReConnectTimer = SetTimer(10,30000,NULL);
    }
    return bRet;
}

BOOL CTmBridgeInt::UnInit()
{
    if(!m_bInit)
        return FALSE;
    ::PostMessage( HWND_BROADCAST, uiGlobal_MsgID_BridgeControlAPIDiscover, (WPARAM)hInit_MainWindowHandle,1);

    if(m_ReConnectTimer)
    {
        KillTimer(m_ReConnectTimer);
        m_ReConnectTimer = NULL;
    }
    return TRUE;
}

BOOL    CTmBridgeInt::SendBridgeCommand(const CString &strCommand)
{
    if(!strCommand.IsEmpty())
    {
        if(!hGlobal_BridgeAPIWindowHandle)
        {
            return FALSE;
        }
        COPYDATASTRUCT oCopyData;
        oCopyData.dwData=0;
        oCopyData.lpData=(LPTSTR)(LPCTSTR)strCommand;
        oCopyData.cbData=strlen((LPTSTR)(LPCTSTR)strCommand) 1;
       
        if( oCopyData.cbData!=1 )
        {
            if( ::SendMessage( hGlobal_BridgeAPIWindowHandle, WM_COPYDATA, (WPARAM)hInit_MainWindowHandle, (LPARAM)&oCopyData)==FALSE )
            {//�Ѿ����Ͽ��ˣ�������������
                return FALSE;
            }else
            {
                return TRUE;
            }
        }
    }
    return FALSE;
}

LRESULT CTmBridgeInt::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
    UINT uiMessage=message;
    WPARAM  uiParam = wParam;
    LPARAM  ulParam = lParam;

    LRESULT lReturnCode;
    bool fIssueDefProc;

    lReturnCode=0;
    fIssueDefProc=false;
   
    switch(uiMessage)
        {
        case WM_COPYDATA:
            if( hGlobal_BridgeAPIWindowHandle==(HWND)uiParam )
                {
                    PCOPYDATASTRUCT poCopyData=(PCOPYDATASTRUCT)ulParam;
                    lReturnCode=1;//��֤����1��ȷ�����ӣ�����0�����������Ͽ�����
                    m_strBridgeReturn = (LPTSTR)(LPCTSTR)poCopyData->lpData;
                    ProcessCallStatue();
                }
            break;
        default:
            if( uiMessage==uiGlobal_MsgID_BridgeControlAPIAttach )
                {              
                switch(ulParam)
                    {
                    case BRIDGECONTROLAPI_ATTACH_SUCCESS:
                        hGlobal_BridgeAPIWindowHandle=(HWND)uiParam;
                        AppendResult("�����������ӳɹ�");
                        break;
                    case BRIDGECONTROLAPI_ATTACH_FAILED:
                        AppendResult("����������ʧ��");
                        break;
                    case BRIDGECONTROLAPI_ATTACH_EXIT:
                        //AppendResult("�������˳�����");
                        //����������ʱ���Զ���������
                        //
                        break;
                    }
                lReturnCode=1;
                break;
                }
            fIssueDefProc=true;
            break;
        }
    if( fIssueDefProc )
        lReturnCode=CWnd::WindowProc(message, wParam, lParam);//DefWindowProc( hWindow, uiMessage, uiParam, ulParam);

    return(lReturnCode);    
    //return CWnd::WindowProc(message, wParam, lParam);
}

void CTmBridgeInt::InitVariable()
{
    hGlobal_BridgeAPIWindowHandle=NULL;
    m_bInit = TRUE;
}

void CTmBridgeInt::AppendResult(CString str)
{
    TRACE(str);
    TRACE("\n");
    ::SendMessage(m_hParentWnd,BRIDGE_CALLBACK_STATUE_MESSAGE,0,(LPARAM)(LPTSTR)(LPCTSTR)str);
}

int CTmBridgeInt::_StringSplit(const CString &str, CStringArray &arr, TCHAR chDelimitior)
{
    int nStart = 0, nEnd = 0;
    arr.RemoveAll();

    while (nEnd < str.GetLength())
    {
        nEnd = str.Find(chDelimitior, nStart);
        if( nEnd == -1 )
        {
            // reached the end of string
            nEnd = str.GetLength();
        }

        CString s = str.Mid(nStart, nEnd - nStart);
        if (!s.IsEmpty())
            arr.Add(s);

        nStart = nEnd 1;
    }
    return arr.GetSize();
}

void CTmBridgeInt::ProcessCallStatue()
{
    CStringArray strArray;
    if(_StringSplit(m_strBridgeReturn,strArray,' ') > 0)
    {
        if(strArray.GetAt(0) == BRIDGE_CALLIN)
        {//��0.1�汾֧�֣�����,�Ժ󽫱���̭
            if(strArray.GetSize() > 1)
            {
                CString str;
                str="���������յ����磬���룺";
                str =strArray.GetAt(1);
                AppendResult(str);
            }
        }else
        {
            AppendResult(m_strBridgeReturn);
        }
    }
}

void CTmBridgeInt::OnTimer(UINT nIDEvent)
{
    if(nIDEvent == m_ReConnectTimer )
    {
        ::PostMessage( HWND_BROADCAST, uiGlobal_MsgID_BridgeControlAPIDiscover, (WPARAM)hInit_MainWindowHandle, 0);
    }
    CWnd::OnTimer(nIDEvent);
}


【核心代码】

.
├── Bridge API 开发文档.pdf
├── TestBridgeAPI
│   ├── Call.cpp
│   ├── Call.h
│   ├── InputID.cpp
│   ├── InputID.h
│   ├── ReadMe.txt
│   ├── Release
│   ├── StdAfx.cpp
│   ├── StdAfx.h
│   ├── TestBridgeAPI.aps
│   ├── TestBridgeAPI.clw
│   ├── TestBridgeAPI.cpp
│   ├── TestBridgeAPI.dsp
│   ├── TestBridgeAPI.dsw
│   ├── TestBridgeAPI.exe
│   ├── TestBridgeAPI.h
│   ├── TestBridgeAPI.ncb
│   ├── TestBridgeAPI.opt
│   ├── TestBridgeAPI.plg
│   ├── TestBridgeAPI.rc
│   ├── TestBridgeAPIDlg.cpp
│   ├── TestBridgeAPIDlg.h
│   ├── TmBridgeAPI.h
│   ├── TmBridgeInt.cpp
│   ├── TmBridgeInt.h
│   ├── TmBridgeSDK.cpp
│   ├── TmBridgeSDK.h
│   ├── res
│   │   ├── TestBridgeAPI.ico
│   │   └── TestBridgeAPI.rc2
│   └── resource.h
├── TestBridgeAPI.exe
├── 好例子网_Bridge API 开发文档.rar
└── 子佩电话录音盒说明书.doc

3 directories, 32 files




实例下载地址

子佩来电盒二次开发API

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警