VC++开发酷Q插件随笔【一】打开并编译官方dome
希望我的笔记可以帮助到你!
前言...
酷Q的原理是根据QQ通信协议来登陆(login),进而实现接收(recv)和回复(send)。
他是一个可扩展的QQ客户端框架,可以被理解为自制的QQ客户端。
注意:可扩展性是软件设计的一个较高境界了,如果你也能写出类似酷Q具备扩展功能的程序,那你一定非常厉害了。
下载,编译,运行官方dome
首先你的电脑里需要安装Visual Studio,官方dome是vs2013版,我使用vs2017,可以正常编译,但如果你的版本低于2013就不一定能行,建议升级版本。
官方dome下载:https://github.com/CoolQ/cqsdk-vc 如果你不会下载的话,看下图
之后得到一个压缩包,解压他,打开CQPdemo.sln
打开后提示升级工具集,因为他使用的是vs2010(v100)的生成工具。我们vs里并没没有,点击确定升级一下即可。
之后注意一下项目目录,似乎很多,我们只需要关注“appmain.cpp”,“cqp.h”,“com.example.democ.json”三个即可,其他无需理会,我们根本不用改他们。
我们首先来关注一下appmain.cpp,代码很多,找到第81行的代码
/*
* Type=21 私聊消息
* subType 子类型,11/来自好友 1/来自在线状态 2/来自群 3/来自讨论组
*/
CQEVENT(int32_t, __eventPrivateMsg, 24)(int32_t subType, int32_t msgId, int64_t fromQQ, const char *msg, int32_t font) {//如果要回复消息,请调用酷Q方法发送,并且这里 return EVENT_BLOCK - 截断本条消息,不再继续处理 注意:应用优先级设置为"最高"(10000)时,不得使用本返回值//如果不回复消息,交由之后的应用/过滤器处理,这里 return EVENT_IGNORE - 忽略本条消息return EVENT_IGNORE;
}
这是个特殊的c++写法,他实现原理在这里不做探究,我们只需知道,只要有人发给机器人私聊,他就会调用这个函数。
同理,根据代码注释,我们也知道其他函数的作用了,比如:
/*
* Type=2 群消息
*/
CQEVENT(int32_t, __eventGroupMsg, 36)(int32_t subType, int32_t msgId, int64_t fromGroup, int64_t fromQQ, const char *fromAnonymous, const char *msg, int32_t font) {return EVENT_IGNORE; //关于返回值说明, 见“_eventPrivateMsg”函数
}
这个注释已经很明白了,只要有群消息,这个函数就会运行,至于其他函数,看注释即可。
考虑做一个程序:只要机器人收到私聊消息,他就会回复一条“HI”
我们现在已经知道,有私聊消息该怎么接收,那么怎么回复呢?
打开"cqp.h",里面有Q酷提供的所有功能。
注意39行
/*
* 发送私聊消息, 成功返回消息ID
* QQID 目标QQ号
* msg 消息内容
*/
CQAPI(int32_t) CQ_sendPrivateMsg(int32_t AuthCode, int64_t QQID, const char *msg);
注释告诉我们,QQID的值QQ号,msg是消息内容。那么AuthCode填什么呢?
注意"appmian.cpp" ,14行
int ac = -1; //AuthCode 调用酷Q的方法时需要用到
填写ac即可,至于为什么需要,我也没办法了解。
所以,在“appmain.cpp“私聊消息中,填写
CQEVENT(int32_t, __eventPrivateMsg, 24)(int32_t subType, int32_t msgId, int64_t fromQQ, const char *msg, int32_t font) {CQ_sendPrivateMsg(ac, fromQQ, "HI"); //这是我们加入的代码,只加入这一行,其他都不要改动//如果要回复消息,请调用酷Q方法发送,并且这里 return EVENT_BLOCK - 截断本条消息,不再继续处理 注意:应用优先级设置为"最高"(10000)时,不得使用本返回值//如果不回复消息,交由之后的应用/过滤器处理,这里 return EVENT_IGNORE - 忽略本条消息return EVENT_IGNORE;
}
即可,其中fromQQ是给机器人发消息的QQ。
这样就可以做到,只要机器人收到私聊消息,他就会回复一条“HI”
好了,这样我们的代码就完成了,在编译之前还要最后的改动
右击箭头,然后点击属性
代码生成->运行库->改成多线程调试。这么做的原因我在之前的博客有写,你可以不关注他的原理,这无关紧要。
预编译头->预编译头->改成不适用预编译头。
之后选择生成,生成->重新生成解决方案。
在项目目录找到两个文件 ”com.example.democ.dll“和”“
把他们放到酷Q的目录,app下。
然后重启酷Q,单击五下版本号,开启开发者模式。
点击重启酷Q即可开启,然后启动酷Q样例应用(VC),因为我们没有修改包名,这是默认的。
确定即可,然后测试我们的应用效果。
VC++开发酷Q插件随笔【一】打开并编译官方dome相关推荐
- python开发酷q插件_基于python和酷Q的QQ机器人开发实践(1)
基本框架 (1) 酷Q:目前最常用的QQ机器人软件(尤其是在smartQQ失效以后). (2) 酷Q HTTP插件:通过HTTP对酷Q的事件进行上报以及接收HTTP请求来调用酷Q的DLL接口,从而可以 ...
- python开发酷q插件gui_基于python和酷Q的QQ机器人开发实践(1)
基本框架 (1) 酷Q:目前最常用的QQ机器人软件(尤其是在smartQQ失效以后). (2) 酷Q HTTP插件:通过HTTP对酷Q的事件进行上报以及接收HTTP请求来调用酷Q的DLL接口,从而可以 ...
- python开发酷q插件gui_【酷Q插件制作】教大家做一个简单的签到插件
.版本 2.支持库 internet .程序集 程序集1 .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码 _临时子程序 ()'在初始化代码执行完毕后调用测试代码 返回 (0 ...
- 酷Q插件_SDK———入门与使用
1.这里使用的是易语言的SDK,所以请看不惯的人自行离开.{wymbf.} 1.2 这里不会直接给你工程,请用动手打代码,动脑思考. 1.3 不知道.不了解酷Q是干嘛的,请访问:https://cqp ...
- 怎么用c语言编辑酷q,GitHub - traceless0929/Native.Cqp.Csharp: 完全由 C# 语言编写的 酷Q 插件SDK...
代码库介绍 base分支为我自用的新建App的模板,引入了一些自己的机制简化开发流程 增加指令消息解析类,采用 (wwh) what who how模式 反射机制优化流程 同步更新Native.SDK ...
- 一些vc开发浏览器及插件的资料
如何往IE工具条添加按钮 问题提出: 金山词霸.网络蚂蚁等软件安装后会向IE的工具条添加自己的按钮.按下按钮后还会作出相应的动作,这种功能是如何实现的呢?读完本文,您也可以将自己应用程序的按钮添加到I ...
- 使用酷Q SDK开发QQ机器人
酷Q SDK下载地址:https://github.com/CoolQ/cqsdk-vc 打开工程,编辑appmain.cpp 将"私聊消息"处的代码 更改为 CQEVENT(in ...
- 酷q插件开发Java_如何使用Java开发QQ机器人 方法一
使用Java开发QQ机器人- CQ & HTTP API 使用库Q平台下的CQ HTTP API插件以及simple-robot核心标准库作为依赖. 此插件与框架的 简陋 简单介绍:文档处简介 ...
- Python 酷Q qq机器人初学
Python 酷Q 本篇博客就简单的介绍用Python写酷Q插件的准备工作 1.安装Python3.7(32-bit) 我用的是Python37,因为目前仅支持Python32位版本,所以就只能用32 ...
最新文章
- python 申请内存空间、用于创建多维数组_python 申请内存空间,用于创建多维数组的实例...
- 2019年深度学习自然语言处理最新十大发展趋势(附下载报告)
- Kncok之绑定事件
- Mac m1 ocr 工具
- 自动化办公之excel教程(3):数据编辑操作,表格的美化操作,应用表格样式和单元格样式,制作报销汇总单
- java 录屏_java 录屏 小工具源码(idea)
- 【WebRTC---源码篇】(二)PeerConnectionFactory
- 在系统二进制文件中检测到错误_门禁管理系统施工中常见的布线错误
- mysql+last_query_cost_辛星简译MySQL中的last_query_cost
- 小数保留4位_实验结果保留几位有效数字?
- NO.6 计算数组中存在重复元素 II
- Pycharm设置一种好看的皮肤/主题
- The Book of Mozilla
- stvd使用c语言编程,stm8编程tips(stvd)
- n6 tenda 固件_腾达 Tenda N6 刷 TTDW 说明
- mysql查询分数前三个_MySQL中查询获取每个班级成绩前三名的学生信息
- Kettle连接mysql错误 org.pentaho.ui.xul.XulException: java.lang.reflect.InvocationTargetException
- 计算机道德 英语作文,关于道德的英语作文
- java纸牌_Java纸牌拖拉机简单模拟
- 景区环境监测系统监测天气与客流量
热门文章
- DB2 10.5 BLU列式存储技术初试
- 全球关注 这个夏天世界劲刮“青奥风”
- WebRTC入门与实战 --- WebRTC原理与架构
- win10关闭缩略图方法
- 上班全是束缚,自由存在于何处?
- “飞常准”大热:航班信息“非常准”之谜_科技_腾讯网
- flash 世界地图 ajax 标注,帝国cms MAPABC地图标注[flash版地图]
- 计算机术语表-主板术语
- 为你的应用加速 - 安卓优化指南
- 带你了解嵌入式处理器的流水线技术