QQ API

QQ API设计说明书目录一、引言    31.1 编写目的    31.2 更新时间    3二、总体设计    3三、注册的系统消息    33.1 WM_QQAPI_REGISTER    33.2 WM_QQAPI_REGISTER_RESP    43.3 WM_QQAPI_AVAILABLE    4四、从设备到QQ的自定义事件    54.1 EVENT_QQAPI_SET_AUDIODEVICE    54.2 EVENT_QQAPI_GET_USERINFO    54.3 EVENT_QQAPI_PRESS_KEY    54.4 EVENT_QQAPI_CALL    64.5 EVENT_QQAPI_MUTE    64.6 EVENT_QQAPI_UNREGISTER    7五、从QQ到设备的自定义事件    75.1 EVENT_QQAPI_USERINFO    75.2 EVENT_QQAPI_STATUS_CHANGE    75.3 EVENT_QQAPI_SHUTDOWN    8六、双向的自定义事件    86.1 EVENT_QQAPI_CALL_STATUS    8七、错误码定义    107.1 从QQ到设备――EVENT_QQAPI_ERROR    10八、参数类型码表    11 一、引言1.1 编写目的本文档提供了QQ API接口说明,以供第三方应用程序使用,用于QQ和硬件设备(例如USB Phone)的交互。1.2 更新时间最后修订日期:2005-05-24版本号:v1.0二、总体设计QQ应用程序和第三方应用程序以收发消息的方式进行通讯。双方未成功注册之前,采用RegisterWindowMessage(Windows API)注册的系统消息进行交互,注册成功后,双方分别获取对方的窗口句柄,接下来的交互通过收发WM_COPYDATA(Windows消息)消息完成。WM_COPYDATA的wParam参数为发送方的窗口句柄,lParam为指向COPYDATASTRUCT结构的指针,COPYDATASTRUCT定义如下:typedef struct tagCOPYDATASTRUCT{      ULONG_PTR    dwData;      DWORD         cbData;      PVOID         lpData;}COPYDATASTRUCT, *PCOPYDATASTRUCT;dwData:事件码,标示传送的消息事件码lpData:消息参数,采用多个相连的“类型(1字节)+长度(4字节)+值”的格式。所有的参数类型码表见8 参数类型码表cbData:消息参数总长度,单位字节三、注册的系统消息第三方程序使用Windows SDK――RegisterWindowMessage,进行下列系统消息的注册。例如:RegisterWindowMessage(“WM_QQAPI_REGISTER”);3.1 WM_QQAPI_REGISTER消息名:注册消息方向:设备?QQwParam:发送方的窗口句柄lParam:QQ API版本号,目前为100,表示1.00。第三方应用程序启动并检测到可用的设备后,向所有Windows窗口广播这个消息,带上自己的窗口句柄作为消息参数,如下:SendMessage( HWND_BROADCAST, WM_QQAPI_REGISTER, 发送端窗口句柄, 0);当QQ收到这个消息时,弹出“外设控制”窗口等待用户选择,如下: 3.2 WM_QQAPI_REGISTER_RESP消息名:注册回复消息方向:QQ?设备wParam:值如下:WAITING(1):等待用户选择OK(2):用户选择“允许使用”REJECT(3):用户选择“禁止使用”lParam:当wParam为OK(2)时,lParam为QQ应用程序的窗口句柄。当用户选择“禁止使用”之后,如果第三方应用程序再次发送WM_QQAPI_REGISTER消息,QQ不再弹出“QQ安全警告”框,直接返回REJECT的WM_QQAPI_REGISTER_RESP消息,直到QQ程序重新启动为止。3.3 WM_QQAPI_AVAILABLE消息名:QQ API可用消息方向:QQ?设备wParam:发送方的窗口句柄,即QQ程序的窗口句柄lParam:QQ API版本号,目前为1当QQ启动后,向所有Windows窗口广播这个消息:SendMessage( HWND_BROADCAST, WM_QQAPI_AVAILABLE, QQ窗口句柄, 0);当第三方应用程序收到这个消息时,再发起WM_QQAPI_REGISTER消息进行注册。这种情况出现在,当第三方应用程序先启动,而QQ程序后启动的情况下。四、从设备到QQ的自定义事件4.1 EVENT_QQAPI_SET_AUDIODEVICE事件说明:设置QQ使用的音频设备参数说明:WM_COPYDATA中的参数COPYDATASTRUCT结构说明详见2dwData(事件码):10lpData:如下表cbData:消息参数总长度参数类型码    长度    值说明5    设备名长度    音频设备名,类型:以Null结尾的字符串6    4字节    音频设备的设备ID号,类型:DWORD第三方应用程序可通过音频设备名字字符串或者通过设备ID号,来发送设置音频设备事件。4.2 EVENT_QQAPI_GET_USERINFO事件说明:获取QQ用户信息参数说明:WM_COPYDATA中的参数COPYDATASTRUCT结构说明详见2dwData(事件码):11lpData:NULLcbData:0QQ返回的用户信息,见5.1 EVENT_QQAPI_USERINFO。4.3 EVENT_QQAPI_PRESS_KEY事件说明:发送按键消息,当用户在设备上按下任何键时,发送此事件给QQ参数说明:WM_COPYDATA中的参数COPYDATASTRUCT结构说明详见2dwData(事件码):12lpData:如下表cbData:消息参数总长度参数类型码    长度    值说明7    1字节    键值,详见“键值映射表” 键值映射表:键名    键值0    0x801    0x812    0x823    0x834    0x845    0x856    0x867    0x878    0x889    0x89Down    0x8DUp    0x8EClear    0x8FOK (呼叫键)    0x91Cancel (挂断键)    0x92STAR (*)    0x93SHARP (#)    0x94Mute (静音键)    0x95RINGTONG (切换铃声键)    0x964.4 EVENT_QQAPI_CALL事件说明:直接呼叫一个好友用户参数说明:WM_COPYDATA中的参数COPYDATASTRUCT结构说明详见2dwData(事件码):13lpData:如下表cbData:消息参数总长度通过QQ号呼叫:参数类型码    长度    值说明1    QQ号长度    QQ号,类型:以Null结尾的字符串通过昵称呼叫:参数类型码    长度    值说明2    昵称长度    昵称,类型:以Null结尾的字符串通过速播号呼叫:参数类型码    长度    值说明3    速播号长度    速播号,类型:以Null结尾的字符串通过PSTN号码呼叫:参数类型码    长度    值说明4    PSTN号码长度    PSTN号码,类型:以Null结尾的字符串4.5 EVENT_QQAPI_MUTE事件说明:静音设置,根据参数决定是打开静音或者关闭静音参数说明:WM_COPYDATA中的参数COPYDATASTRUCT结构说明详见2dwData(事件码):14lpData:如下表cbData:消息参数总长度参数类型码    长度    值说明12    1字节    静音状态标志。1:静音打开;0:静音关闭4.6 EVENT_QQAPI_UNREGISTER事件说明:反注册参数说明:WM_COPYDATA中的参数COPYDATASTRUCT结构说明详见2dwData(事件码):15lpData:NULLcbData:0当第三方应用程序退出时,向QQ发送此事件消息,QQ将音频设备切换回系统原有设备。五、从QQ到设备的自定义事件5.1 EVENT_QQAPI_USERINFO事件说明:返回本地QQ用户信息。对应于4.2 EVENT_QQAPI_GET_USERINFO参数说明:WM_COPYDATA中的参数COPYDATASTRUCT结构说明详见2dwData(事件码):16lpData:如下表cbData:消息参数总长度参数类型码    长度    值说明1    QQ号长度    QQ号,类型:以Null结尾的字符串2    昵称长度    昵称,类型:以Null结尾的字符串5.2 EVENT_QQAPI_STATUS_CHANGE事件说明:QQ上的各种状态变化通知参数说明:WM_COPYDATA中的参数COPYDATASTRUCT结构说明详见2dwData(事件码):17lpData:如下表cbData:消息参数总长度状态变化类型说明:(1)    DIALNUM说明:拨号时的号码变化。参数子项依次为:参数类型码    长度    值说明11    1字节    DIALNUM,状态变换类型码:11    QQ号长度    QQ号,类型:以Null结尾的字符串当用户拨号,QQ在收号时,如果号码发生变换,例如用户在键盘上按一个号码,或用户在PC上按一个号码,或用户按清除键Clear,那么,QQ向第三方程序发送此事件通知。第三方程序可通过此事件通知来进行拨号过程中LCD的显示操作。5.3 EVENT_QQAPI_SHUTDOWN事件说明:关闭QQ应用程序参数说明:WM_COPYDATA中的参数COPYDATASTRUCT结构说明详见2dwData(事件码):18lpData:NULLcbData:0当QQ应用程序退出时,向第三方程序发送此事件消息。六、双向的自定义事件6.1 EVENT_QQAPI_CALL_STATUS事件说明:呼叫状态通知参数说明:WM_COPYDATA中的参数COPYDATASTRUCT结构说明详见2dwData(事件码):19lpData:如下表cbData:消息参数总长度呼叫状态类型说明:(1)CONNECTING方向:从QQ到设备说明:呼出,正在等待对方应答。参数子项依次为:参数类型码    长度    值说明8    1字节    CONNECTING,呼叫状态类型码:19    4字节    呼叫句柄(CallHandle),类型:DWORD10    1字节    通话人数,类型:char1    QQ号长度    QQ号,类型:以Null结尾的字符串2    昵称长度    昵称,类型:以Null结尾的字符串其中,呼叫句柄为QQ分配的唯一呼叫标识符;通话人数为同时呼出的QQ个数;接下来紧跟的2个参数子项为被呼叫的QQ好友信息,如果被呼叫的QQ好友有多个,则有多个QQ好友信息。回铃音由QQ控制播放。(2)RING方向:从QQ到设备说明:呼入,振铃。参数子项依次为:参数类型码    长度    值说明8    1字节    RING,呼叫状态类型码:29    4字节    呼叫句柄(CallHandle),类型:DWORD1    QQ号长度    QQ号,类型:以Null结尾的字符串2    昵称长度    昵称,类型:以Null结尾的字符串4(可选)    PSTN号码长度    PSTN号码,类型:以Null结尾的字符串其中,呼叫句柄为QQ分配的唯一呼叫标识符;接下来的2个参数子项为呼入QQ好友信息;最后一个参数项为可选项,呼出的PSTN号码,该号码直接由呼叫方指定,本地QQ完成呼叫转移,转到PSTN号码上。如果RINGING带了“呼出的PSTN号码”,则本地不振铃,直接转移呼出;如果RINGING没带“呼出的PSTN号码”,则本地振铃。(3)BUSY(针对转接盒设备)方向:双向说明:占线。参数子项依次为:参数类型码    长度    值说明8    1字节    BUSY,呼叫状态类型码:39    4字节    呼叫句柄(CallHandle),类型:DWORD从QQ到设备:呼出,等待对方应答,且当对方的设备被PSTN占用时,则QQ向本地设备发送占线状态。从设备到QQ:呼入,本地振铃,且当本地设备被PSTN占用时,则本地设备向QQ发送占线状态。(4)ACCEPT方向:从QQ到设备说明:呼入或呼出,某方接受,双方进入通话状态。参数子项依次为:参数类型码    长度    值说明8    1字节    ACCEPT,呼叫状态类型码:49    4字节    呼叫句柄(CallHandle),类型:DWORD (5)REJECT方向:从QQ到设备说明:呼入或呼出,某方拒绝。参数子项依次为:参数类型码    长度    值说明8    1字节    REJECT,呼叫状态类型码:59    4字节    呼叫句柄(CallHandle),类型:DWORD (6)FINISH方向:从QQ到设备说明:呼入或呼出,通话结束,无论哪方发起。参数子项依次为:参数类型码    长度    值说明8    1字节    FINISH,呼叫状态类型码:69    4字节    呼叫句柄(CallHandle),类型:DWORD (7)FAIL方向:从QQ到设备说明:呼出失败。参数子项依次为:参数类型码    长度    值说明8    1字节    FAIL,呼叫状态类型码:79    4字节    呼叫句柄(CallHandle),类型:DWORD失败原因可能是,呼叫的用户不是QQ好友。(8)HOLD(针对转接盒设备)方向:从设备到QQ说明:暂停通话,通话被切换到PSTN。参数子项依次为:参数类型码    长度    值说明8    1字节    HOLD,呼叫状态类型码:89    4字节    呼叫句柄(CallHandle),类型:DWORD (9)RESUME(针对转接盒设备)方向:从设备到QQ说明:恢复通话,通话被切换到回QQ。参数子项依次为:参数类型码    长度    值说明8    1字节    RESUME,呼叫状态类型码:99    4字节    呼叫句柄(CallHandle),类型:DWORD (10)MUTE方向:从QQ到设备说明:静音状态通知。参数子项依次为:参数类型码    长度    值说明8    1字节    MUTE,呼叫状态类型码:109    4字节    呼叫句柄(CallHandle),类型:DWORD12    1字节    静音状态标志。1:静音打开;0:静音关闭七、错误码定义7.1 从QQ到设备――EVENT_QQAPI_ERROR事件说明:从QQ到设备的错误通知参数说明:WM_COPYDATA中的参数COPYDATASTRUCT结构说明详见2dwData(事件码):20lpData:如下表cbData:消息参数总长度参数类型码    长度    值说明12    1字节    错误类型,类型:char错误码定义:八、参数类型码表参数类型码    长度    值说明1    QQ号长度    QQ号,类型:以Null结尾的字符串2    昵称长度    昵称,类型:以Null结尾的字符串3    速播号长度    速播号,类型:以Null结尾的字符串4    PSTN号码长度    PSTN号码,类型:以Null结尾的字符串5    设备名长度    音频设备名,类型:以Null结尾的字符串6    4字节    音频设备的设备ID号,类型:DWORD7    1字节    键值,详见4.3的“键值映射表”8    1字节    呼叫状态的类型,类型:char,主要有:(1)CONNECTING,呼叫状态类型码:1(2)RING,呼叫状态类型码:2(3)BUSY,呼叫状态类型码:3(4)ACCEPT,呼叫状态类型码:4(5)REJECT,呼叫状态类型码:5(6)FINISH,呼叫状态类型码:6(7)FAIL,呼叫状态类型码:7(8)HOLD,呼叫状态类型码:8(9)RESUME,呼叫状态类型码:9(10)MUTE,呼叫状态类型码:109    4字节    呼叫句柄(CallHandle),类型:DWORD10    1字节    通话人数,类型:char注:通话人数会影响后续的参数子项,例如当通话人数为2,后面会跟两份的QQ用户信息。11    1字节    状态变换的类型,类型:char,主要有:(1)DIALNUM,状态变换类型码:112    1字节    静音状态标志。1:静音打开;0:静音关闭13    1字节    错误类型,类型:char文章引用自:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/389188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 18.04 下如何配置mysql 及 配置远程连接

首先是大家都知道的老三套,啥也不说上来就放三个大招: sudo apt-get install mysql-serversudo apt isntall mysql-clientsudo apt install libmysqlclient-dev 这三步下来mysql就装好了,然后我们偷偷检查一下 sudo netstat -tap | grep mysq…

数据科学与大数据技术的案例_主数据科学案例研究,招聘经理的观点

数据科学与大数据技术的案例I’ve been in that situation where I got a bunch of data science case studies from different companies and I had to figure out what the problem was, what to do to solve it and what to focus on. Conversely, I’ve also designed case…

导致View树遍历的时机

遍历View树意味着整个View需要重新对其包含的子视图分配大小并重绘,导致重新遍历的原因主要有三个 1.视图本身内部状况变化引起重绘。 2.第二个是View树内部添加或者删除了View。 3.View本身的大小及可见性发生变化。 能引起View树重新遍历的操作,总…

什么是Hyperledger?Linux如何围绕英特尔的区块链项目构建开放平台?

访问区块链会议并关注区块链新闻时,不可避免地,您会遇到Linux基金会的Hyperledger。理解像比特币、以太坊这样的加密货币还算相对容易的,Hyperledger却不然。但如果你多研究研究,你会发现一些令人兴奋的非货币、工业区块链的应用项…

队列的链式存储结构及其实现_了解队列数据结构及其实现

队列的链式存储结构及其实现A queue is a collection of items whereby its operations work in a FIFO — First In First Out manner. The two primary operations associated with them are enqueue and dequeue.队列是项目的集合,由此其操作以FIFO(先进先出)的方…

安装

、添加一个新项目->选择类库模板->命名为DBCustomAction 2、单击项目右键->添加新项->选择安装程序类(命名为DBCustomAction.cs) 3、在 服务器资源管理器中添加->连接到 数据库->指定用户密码(选择允许保存密码)-> 数据库选择master 4、切换到DBCustomAct…

cad2016珊瑚_预测有马的硬珊瑚覆盖率

cad2016珊瑚What’s the future of the world’s coral reefs?世界珊瑚礁的未来是什么? In February of 2020, scientists at University of Hawaii Manoa released a study addressing this very question. The models they developed forecasted a 70–90% worl…

EChart中使用地图方式总结(转载)

EChart中使用地图方式总结 2018年02月06日 22:18:57 来源:https://blog.csdn.net/shaxiaozilove/article/details/79274772最近在仿照EChart公交线路方向示例,开发表示排水网和污水网流向地图,同时地图上需要叠加排放口、污染源、污水处理厂等…

android mvp模式

越来越多人讨论mvp模式,mvp在android应用开发中获得更多的重视,这里说一下对MVP的简单了解。 什么是 MVP? MVP模式使逻辑从视图层分开,目的是我们在屏幕上怎么表现,和界面如何工作的所有事情就完全分开了。 View显示数据&…

Node.js REPL(交互式解释器)

2019独角兽企业重金招聘Python工程师标准>>> Node.js REPL(交互式解释器) Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统…

中国移动短信网关CMPP3.0 C#源代码:使用示例

中国移动短信网关CMPP3.0 C#源代码:使用示例 中国移动短信网关CMPP3.0 C#源代码使用,在上一篇文章中我介绍过cmpp3.0,这段时间因为也做关于移动短信网关的开发,在这里给大家一个演示如何使用cmpp3.0开发移动短信网关。Using Tiray.SMS... Ti…

用python进行营销分析_用python进行covid 19分析

用python进行营销分析Python is a highly powerful general purpose programming language which can be easily learned and provides data scientists a wide variety of tools and packages. Amid this pandemic period, I decided to do an analysis on this novel coronav…

名称

命名规则:Go中函数、变量、常量、类型、语句标签和包的名称都遵循一个规则,开头是一个字母或下划线,后面跟任意字符、数字和下划线,并区分大小写。例如:heapSort和HeapSort是不同名称。关键字:Go有25个关键…

Alpha冲刺第二天

Alpha第二天 1.团队成员 郑西坤 031602542 (队长) 陈俊杰 031602504陈顺兴 031602505张胜男 031602540廖钰萍 031602323雷光游 031602319苏芳锃 0316023302.项目燃尽图 3.项目进展 时间工作内容11月18日UI设计、初步架构搭建11月19日UI设计、服务器的进一…

Tiray.SMSTiray.SMSTiray.SMSTiray.SMSTiray.SMSTiray.SMS

这是2005年6月云南移动短信网关升级到3.0时写的,在SP那稳定运行了很长时间的。因为SP倒闭了,贴出来给有兴趣的朋友参考。优点:支持多线程、滑动窗口、异步发送、全事件模式、自动识别ASCII、GBK、UCS-2缺点:不支持长短信自动分页、…

水文分析提取河网_基于图的河网段地理信息分析排序算法

水文分析提取河网The topic of this article is the application of information technologies in environmental science, namely, in hydrology. Below is a description of the algorithm for ranking rivers and the plugin we implemented for the open-source geographic…

请不要更多的基本情节

“If I see one more basic blue bar plot…”“如果我再看到一个基本的蓝色条形图……” After completing the first module in my studies at Flatiron School NYC, I started playing with plot customizations and design using Seaborn and Matplotlib. Much like doodl…

Powershell-获取DHCP地址租用信息

需求&#xff1a;业务需要获取现阶段DHCP服务器所有地址租用信息。 1.首先查看DHCP相关帮助信息&#xff1a;2.确定执行命令并获取相关帮助信息&#xff1a;help Get-DhcpServerv4Scope 名称 Get-DhcpServerv4Scope 语法 Get-DhcpServerv4Scope [[-ScopeId] <ipaddress[]>…

c# 对COM+对象反射调用时地址参数处理 c# 对COM+对象反射调用时地址参数处理

使用反射的方式调用组件里面的方法&#xff0c;经常会遇见一些象地址参数的处理&#xff0c;在C#中表现为ref参数&#xff0c;比如用C#写了一个装配件&#xff0c;里面有一个方法openProcedure(string ProcName,int paraCount,ref string[] parameters)&#xff0c;最后有一个r…

android触摸消息的派发过程

1.触摸消息是消息获取模块直接派发给应用程序的。 2.触摸消息在处理时&#xff0c; 需要根据触摸坐标计算该消息应该派发给哪个View/ViewGroup, 在案件取消处理中不存在 该计算过程。 3.没有类似”系统按键”的”系统触摸键”&#xff0c; 应用程序可完全控制触摸行为。 4.子…