希望我的笔记可以帮助到你!


前言...

酷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相关推荐

  1. python开发酷q插件_基于python和酷Q的QQ机器人开发实践(1)

    基本框架 (1) 酷Q:目前最常用的QQ机器人软件(尤其是在smartQQ失效以后). (2) 酷Q HTTP插件:通过HTTP对酷Q的事件进行上报以及接收HTTP请求来调用酷Q的DLL接口,从而可以 ...

  2. python开发酷q插件gui_基于python和酷Q的QQ机器人开发实践(1)

    基本框架 (1) 酷Q:目前最常用的QQ机器人软件(尤其是在smartQQ失效以后). (2) 酷Q HTTP插件:通过HTTP对酷Q的事件进行上报以及接收HTTP请求来调用酷Q的DLL接口,从而可以 ...

  3. python开发酷q插件gui_【酷Q插件制作】教大家做一个简单的签到插件

    .版本 2.支持库 internet .程序集 程序集1 .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码 _临时子程序 ()'在初始化代码执行完毕后调用测试代码 返回 (0 ...

  4. 酷Q插件_SDK———入门与使用

    1.这里使用的是易语言的SDK,所以请看不惯的人自行离开.{wymbf.} 1.2 这里不会直接给你工程,请用动手打代码,动脑思考. 1.3 不知道.不了解酷Q是干嘛的,请访问:https://cqp ...

  5. 怎么用c语言编辑酷q,GitHub - traceless0929/Native.Cqp.Csharp: 完全由 C# 语言编写的 酷Q 插件SDK...

    代码库介绍 base分支为我自用的新建App的模板,引入了一些自己的机制简化开发流程 增加指令消息解析类,采用 (wwh) what who how模式 反射机制优化流程 同步更新Native.SDK ...

  6. 一些vc开发浏览器及插件的资料

    如何往IE工具条添加按钮 问题提出: 金山词霸.网络蚂蚁等软件安装后会向IE的工具条添加自己的按钮.按下按钮后还会作出相应的动作,这种功能是如何实现的呢?读完本文,您也可以将自己应用程序的按钮添加到I ...

  7. 使用酷Q SDK开发QQ机器人

    酷Q SDK下载地址:https://github.com/CoolQ/cqsdk-vc 打开工程,编辑appmain.cpp 将"私聊消息"处的代码 更改为 CQEVENT(in ...

  8. 酷q插件开发Java_如何使用Java开发QQ机器人 方法一

    使用Java开发QQ机器人- CQ & HTTP API 使用库Q平台下的CQ HTTP API插件以及simple-robot核心标准库作为依赖. 此插件与框架的 简陋 简单介绍:文档处简介 ...

  9. Python 酷Q qq机器人初学

    Python 酷Q 本篇博客就简单的介绍用Python写酷Q插件的准备工作 1.安装Python3.7(32-bit) 我用的是Python37,因为目前仅支持Python32位版本,所以就只能用32 ...

最新文章

  1. python 申请内存空间、用于创建多维数组_python 申请内存空间,用于创建多维数组的实例...
  2. 2019年深度学习自然语言处理最新十大发展趋势(附下载报告)
  3. Kncok之绑定事件
  4. Mac m1 ocr 工具
  5. 自动化办公之excel教程(3):数据编辑操作,表格的美化操作,应用表格样式和单元格样式,制作报销汇总单
  6. java 录屏_java 录屏 小工具源码(idea)
  7. 【WebRTC---源码篇】(二)PeerConnectionFactory
  8. 在系统二进制文件中检测到错误_门禁管理系统施工中常见的布线错误
  9. mysql+last_query_cost_辛星简译MySQL中的last_query_cost
  10. 小数保留4位_实验结果保留几位有效数字?
  11. NO.6 计算数组中存在重复元素 II
  12. Pycharm设置一种好看的皮肤/主题
  13. The Book of Mozilla
  14. stvd使用c语言编程,stm8编程tips(stvd)
  15. n6 tenda 固件_腾达 Tenda N6 刷 TTDW 说明
  16. mysql查询分数前三个_MySQL中查询获取每个班级成绩前三名的学生信息
  17. Kettle连接mysql错误 org.pentaho.ui.xul.XulException: java.lang.reflect.InvocationTargetException
  18. 计算机道德 英语作文,关于道德的英语作文
  19. java纸牌_Java纸牌拖拉机简单模拟
  20. 景区环境监测系统监测天气与客流量

热门文章

  1. DB2 10.5 BLU列式存储技术初试
  2. 全球关注 这个夏天世界劲刮“青奥风”
  3. WebRTC入门与实战 --- WebRTC原理与架构
  4. win10关闭缩略图方法
  5. 上班全是束缚,自由存在于何处?
  6. “飞常准”大热:航班信息“非常准”之谜_科技_腾讯网
  7. flash 世界地图 ajax 标注,帝国cms MAPABC地图标注[flash版地图]
  8. 计算机术语表-主板术语
  9. 为你的应用加速 - 安卓优化指南
  10. 带你了解嵌入式处理器的流水线技术